Вы заблуждаетесь в том, что вещество можно впихнуть в 4, 5… измерения и что оно будет вести себя так-же. Может вещество ведет себя именно так как сейчас за счет этих измерений?
class A {function hello(){ /*...*/ }}
class B extends A {function hello(){ A::hello(); }}
class С extends A {function hello(){ parent::hello(); }}
class D {function hello(){ A::hello(); }}
Если вы видите разницу между B и C и D — изучите PHP документацию.
Всё в результате получается просто, ясно и работает.
1) Почему обращаться придется к объекту класса C? Обращайся хоть к B, хоть к A.
2) Что везде переписывать?
3) В твоем примере тоже статичные вызовы (правда parent).
В PHP для таких случаев есть одна интересная «форма»
class A{
function hello(){
echo "hello";
}
}
class B{
function hello(){
echo "Dudes";
A::hello();
}
}
class C{
function hello(){
B::hello();
echo "0_o";
}
}
$c = new C();
$c->hello();
При вызове, классы B и A будут использовать $this от класса C.
Добавлю ещё, что предоставленный автором метод усложняет понимание того, что должно было и происходит в коде. В сложных системах с множеством вызовов наступит полный капец.
Лично я реализовал-бы систему с помощью простого и ясного метода $this->onA->message('This is A', $txt).
Если вы видите разницу между B и C и D — изучите PHP документацию.
Всё в результате получается просто, ясно и работает.
Да, он написал эту функцию за 6 минут, но исправлять ошибки будете ещё час.
1) Почему обращаться придется к объекту класса C? Обращайся хоть к B, хоть к A.
2) Что везде переписывать?
3) В твоем примере тоже статичные вызовы (правда parent).
При вызове, классы B и A будут использовать $this от класса C.
Я понимаю, что вы не пишете сейчас тестовое задание, но именно так вы ведете себя на дедлайнах, когда нужно написать что-то быстро.
Причина отказа: любой другой программист не сможет разобраться в вашей функции, потому что она ужасна.
Это просто отлично в походе. 10 часов зарядил и ты онлайн в течении 72 часов.
В условиях офиса есть розетки!
Причина — производить классовые изменения вне этого класса.
Tesla для этого выпускает Автомобиль :)
Лично я реализовал-бы систему с помощью простого и ясного метода $this->onA->message('This is A', $txt).
Вывод, который можно сделать: Автор этого поста не любит откровенное вранье.
p.s. пишу, потому что меня еб*т, какой завтра будет хабр.
Спасибо за статью, приятно читать. Действительно «Хорошие новости». :)