Какой смысл упоминать .NET, когда это не язык? Если "код можно писать на чём угодно", тогда и имеет смысл говорить о чем-то из этого списка, а не о .NET.
Что вы подразумеваете под "полноценной средой разработки"? Визуальный редактор для домашних страничек, где "код можно не писать вообще"?
Имхо, объектно-ориентированность у парсера такая-же, как и валидная xhtml-верстка на некоторых проектах яндекса, о которой недавно говорили. Форма от xhtml, смысл остался от html 3.2
А как мне узнать о том, что такой метод принимает только int и экземпляры только класса Locale
Да так же, как собственно и для любого метода, который может принимать только int. Документированием/самодокументированием кода.
Да, IDE для PHP менее развиты, чем IDE для некоторых других языков. Да и вряд ли они вообще в принципе могут иметь многие фишки которые есть в IDE сильнотипизированных языков.
Но это общая проблема, а не только перегрузки методов и тем более ООП.
Двадцать вариантов типов это ПЦ. Как полным ПЦ будет и двадцать перегруженных методов.
Хотя такое может быть при различных вариантах задания какого-то значения, но тогда лучше иметь метод/функцию, которая бы производила приведение всех эти варианты к одному, а в прикладном коде вызывать её.
Может проблема и действительно не меньше, неправильно выразился. Решение спорно, как и большинство решений дословно, переносимые с других языков.
В текущей реализации PHP, это можно решить нисколько не сложнее: public function setLocale($locale)
{
if (is_object($locale)) {
$locale = $locale->getId();
}
$this->localeId = $locale;
}
Более того, если в методе подразумеваются другие действия, не зависящие от типа аргумента, то в вашем варианте их придется держать в двух местах.
нечто крутится в памяти, составные части которого взаимодействуют друг с другом, совершая в течение некоторого времени, определенные действия
А в веб-сценариях это разве не так?
Разве программа, которая на основании полученных данных формирует ответ, чем-то принципиально отличается от других?
PHP-сценарий быстро выполняется... Для кого быстро? Он выполняется на протяжении миллиардов процессорных тактов.
Нет, через if (is_int(...) в теле функции :)
Приведите пример функции, где это требуется в PHP и как по-вашему в том же PHP это можно было бы реализовать "правильно".
Namespaces уже в 5.3 будут, но это не совсем ООП.
Что вы подразумеваете под перегрузкой методов? Разные методы в зависимости от типа аргументов? В слоботипизированном PHP это реализуется, но в другой форме.
В четверке, — программист мог решать это в объявлении функции.
Если вы о "&", то так и в 5-ке можно, но это не совсем то и не совсем так же работает.
это, в том числе и знание design patterns, вы согласны
Умение вырабатывать шаблон решения для распространенной проблемы, а так же быть в курсе тех, что были выработаны другими, вещь полезная, но не совсем уверен, что это относится к ООП. Хотя тоже на всякий случай поставлю смайл :)
Что вы подразумеваете под "полноценной средой разработки"? Визуальный редактор для домашних страничек, где "код можно не писать вообще"?
Да так же, как собственно и для любого метода, который может принимать только int. Документированием/самодокументированием кода.
Да, IDE для PHP менее развиты, чем IDE для некоторых других языков. Да и вряд ли они вообще в принципе могут иметь многие фишки которые есть в IDE сильнотипизированных языков.
Но это общая проблема, а не только перегрузки методов и тем более ООП.
Хотя такое может быть при различных вариантах задания какого-то значения, но тогда лучше иметь метод/функцию, которая бы производила приведение всех эти варианты к одному, а в прикладном коде вызывать её.
В текущей реализации PHP, это можно решить нисколько не сложнее:
public function setLocale($locale){
if (is_object($locale)) {
$locale = $locale->getId();
}
$this->localeId = $locale;
}
Более того, если в методе подразумеваются другие действия, не зависящие от типа аргумента, то в вашем варианте их придется держать в двух местах.
А в веб-сценариях это разве не так?
Разве программа, которая на основании полученных данных формирует ответ, чем-то принципиально отличается от других?
PHP-сценарий быстро выполняется... Для кого быстро? Он выполняется на протяжении миллиардов процессорных тактов.
Приведите пример функции, где это требуется в PHP и как по-вашему в том же PHP это можно было бы реализовать "правильно".
Что вы подразумеваете под перегрузкой методов? Разные методы в зависимости от типа аргументов? В слоботипизированном PHP это реализуется, но в другой форме.
Если вы о "&", то так и в 5-ке можно, но это не совсем то и не совсем так же работает.
Умение вырабатывать шаблон решения для распространенной проблемы, а так же быть в курсе тех, что были выработаны другими, вещь полезная, но не совсем уверен, что это относится к ООП. Хотя тоже на всякий случай поставлю смайл :)
А как можно использовать одно или другое по выбору, если язык предоставляет только один вариант?
Писать class везде где ни попадя, это не "использовать на полную силу", это маразм.
Использовать ООП, это не design patterns и class везде, это значит, мыслить объектами, а не раздельными процедурами и данными.