Pull to refresh

Comments 16

Статья интерестная (в плане реализации), но совсем не понимаю, где в PHP программе может понадобиться строгая типизация.

Если мне нужен string, я легко использую (string)$obj.

Может вам стоит посмотреть на другие языки программирования, которые имеют нормальную типизацию и начать писать на них вашу задачу?

//p.s. у вас в коде
if( $this->type ):
$this->_type= $type;
$this->val= $this->val;
endif; /// Хмммм, PHP 3? :)
она не строгая — она адаптивная. программист сам решает где ему нужна строгая, а где мягкая, а также какой способ приведения типов больше подходит под решаемую задачу (aTitleString, например)

мне не нужна «нормальная» типизация. я хочу сам конструировать типы и правила их приведения

этот синтаксис более лаконичен
впрочем, статья не о типизации вообще ._.
а вот зачем нужна строгая типизация — написано в статье про адаптивную типизацию, в самом начале.
строгая типизация удобней в отладке. мягкая — в написании.
судя по минусам я написал что-то ужасное х)
м… какой содержательный ответ. что ещё интересного скажешь?
Хы, а зачем мне говорить? Вы и сами тут прекрасно общаетесь в комментах, сам с собой)))))
ну, что-то же тебя сподвигло написать столь потрясающее наблюдение…
Вы занимаетесь зуйней! — Это если не дошло с первого раза.
А лично от Вас, мне хотелось бы понять, для чего вообще нужны так называемые геттеры и сеттеры(да, кстати, это паттерн проектирования), какая их роль в проектировании класса?
чтобы контролировать работу стороннего кода с полями объекта
Как контролировать и какие сторонние объекты?
а методы типа getProperty/setProperty — нужны для того, что бы класс имел унифицированный интерфейс для работы со свойствами. И когда в будущем Ваш маленький класс, где сначала свойства были примитивами, а теперь стали полноценными объектами с инициализацией или надо будет добавить кеширование для свойства — тогда вы просто измените метод get — и получите что хотели, но при этом сама система страдать не будет.
[php]
getProperty() {
return $this->property;
}

getProperty() {
return $this->property->getCalculatedValue();
}
[/php]

И скажу Вам на будущие, такие методы лучше всего иметь реализованными на прямую, а не через __call или __get/__set. код потом проще читать и сопровождать.

Пользуйтесь этими знаниями на здоровье.
ты действительно думаешь, что такой интерфейс:
$obj->setChildsCount( $obj->getChildsCount() + 5 );

лучше такого?
$obj->setChildsCount+= 5;

а моё решение позволяет сначала предоставить прямой доступ к полю, а когда потребуется это изменить — просто добавить нужные методы и они будут вызваны вместо прямой записи данных. интерфейс не поменяется и останется столь же удобным как и был.
У меня просто не будет функции setChildsCount().
А вот почему так будет, уже придётся думать самому.
а что будет? increaseChildsCount, decreaseChildsCount, multiplyChildsCount, divideChildsCount..?
$obj->childsCount+= 5;
разумеется
Sign up to leave a comment.

Articles