Crazy
Developer
О каких именно трех китах идет речь в данном конкретном случае?Автор оригинала: T. Anre
Все-таки, все три кита на которых базируется ООП, соблюдаются, так что не надо говорить, что статики не есть ООП.![]()
О каких именно трех китах идет речь в данном конкретном случае?Автор оригинала: T. Anre
Все-таки, все три кита на которых базируется ООП, соблюдаются, так что не надо говорить, что статики не есть ООП.![]()
Сейчас, разрабатываю интранет-двигло на чистом ООП, есть всего две функции "__autoload" и "errorHandler", остальное реализовано на статик-классах и объектах. Без статичного реестра объектов, пришлось бы использовать синглтон. А если вообще не использовать реестр, то приложение пришлось бы переписать в ПОП-стиле, либо юзать глобальный массив.Автор оригинала: dark-demon
и то, следует хорошо подумать прежде чем сковывать свои движения реестром!
Этот случай?Автор оригинала: Crazy
О каких именно трех китах идет речь в данном конкретном случае?
QWERTY::anyfunction();
Я говорю о class Registry. Ты в своей фразе о всех трех китах имел в виду другой код?Автор оригинала: T. Anre
Этот случай?
Если да, то данном примере явно используется, только один кит, и то его уже назвали.PHP:QWERTY::anyfunction();
Не код, а статики в целом.Автор оригинала: Crazy
Ты в своей фразе о всех трех китах имел в виду другой код?
*Я плакаль*Автор оригинала: Crazy
T. Anre, честно говоря, мне непонятно твое стремление любой ценой избежать ответа на прямой вопрос. Ты хочешь скрыть партизанскую тайну?![]()
Киты ООП:Автор оригинала: Crazy
Eще раз: конкретно к классу Registry применимы все эти три кита? Если да, то о каких именно китах (достаточно перечисления) идет речь?
...стало быть, один кит всплыл вверх брюхом. Осталось только два.Автор оригинала: T. Anre
Класс Registry финализирован, следовательно, от него нельзя наследовать...
Из-за того, что всплыл один - наследование, за ним всплыл и другой - полиморфизм.Автор оригинала: Crazy
...стало быть, один кит всплыл вверх брюхом. Осталось только два.
Один.Автор оригинала: Crazy
Впрочем, два ли?
Это типа экзамен? Или с какой целью задается вопрос.Автор оригинала: Crazy
Как там у этого класса с полиморфизмом?
Ты сделал утверждение, показавшееся мне ложным. Соответственно, мне было интересно узнать: это утверждение действительно ложно или у меня уже старческий маразм.Автор оригинала: T. Anre
Это типа экзамен? Или с какой целью задается вопрос.
Автор оригинала: Crazy
Примерчик полиморфного использования можно увидеть?
<?php
abstract class Pet
{
public function __construct()
{
$this->voice();
}
abstract function voice();
}
class Dog extends Pet
{
function voice()
{
echo 'гав-гав';
}
}
class Cat extends Pet
{
function voice()
{
echo 'мяу-мяу';
}
}
new Cat();
new Dog();
?>
Согласен, только вот пример, какие же из китов в нем нарушается(при том что инкапсуляция в данном случае - отдельный разговор)?Автор оригинала: Crazy
Если же вернуться к истокам, то мы получаем следующее: статические классы нарушают по крайней мере одно из оснований ООП.
<?php
class Pet
{
public static function voice()
{
echo 'тишина';
}
}
class Dog extends Pet
{
public static function voice()
{
echo 'гав-гав';
}
}
class Cat extends Pet
{
public static function voice()
{
echo 'мяу-мяу';
}
}
Cat::voice();
Dog::voice();
?>
Всегда готов учиться, так в чем же я ошибся(хотя вернее будет - неправильно выразился)?Автор оригинала: Crazy
Ты сделал утверждение, показавшееся мне ложным.
з.ы. Полиморфизм всплыл в надежде на то, что в счет не берется перегрузка.Автор оригинала: T. Anre
Из-за того, что всплыл один - наследование, за ним всплыл и другой - полиморфизм.
Класс Registry используется как namespace для функций, этот класс реализует инкапсуляцию, но не имеет полиморфного поведения, а так же не демонстрирует наследования. Достаточно?Автор оригинала: Crazy
Как там у этого класса с полиморфизмом?
$GLOBAL['store']['a'] = new SomeClass();Автор оригинала: T. Anre
Ну что ж начинай...![]()
Может все-таки $GLOBALS?Автор оригинала: Lews
$GLOBAL['store']['a'] = new SomeClass();
$a = $GLOBAL['store']['a'];
isset($GLOBAL['store']['a']);
unset($GLOBAL['store']['a']);
Неа, не рулит.Автор оригинала: Lews
Не рулит?
Осетрина не бывает второй свежести.Автор оригинала: T. Anre
Некоторые признаки наследование, тоже присутствует.
Полиморфное поведение достигается только override'ом методов и не достигается overload'ом. Не надо путать теплое с мягким.Полиморфное поведение достигается путем переопределения, либо перегрузкой методов.
Прекрасно. Можно увидеть пример? Для экономии времени сразу отмечу, что пример с "Cat::voice(); Dog::voice();" никакого полиморфизма не демонстрирует (надеюсь, это и не имелось в виду).соотвественно, статичные классы могут реализовать полиморфизм.
Да, Глобалс.Автор оригинала: T. Anre
Может все-таки $GLOBALS?![]()
Неа, не рулит.![]()