У меня хорошее понимание, но плохое понимание его реализации в php ...
У меня есть следующий код, надеюсь, он самодокументирован =).
Мне нужно иметь BB
на выходе
class A{
// I can't copy function::classname() to all my descendant classes
static function classname(){
echo __CLASS__;
}
}
class B extends A{
static function test(){
self::classname();
}
function test1(){
self::classname();
}
//i have A LOT of static and non-static functions using self::classname() in their code
// I can't copy all them to base class
}
$v = new B();
B::test();
$v->test1();
Я застрял с static::
и self::
синтаксисом
PS: еще один безумный вопрос, с которым я столкнулся:
Предположим, у меня есть
function doSomething(){
echo $this->id;
}
Иногда это попадает в статический контекст. Да, я знаю, это потому, что у меня плохой дизайн приложения. Но возможно ли создать вторую (зеркальную, перегрузочную) функцию
static function doSomething(){
echo false;
}
Это означает, что использование
$obj->doSomething()
возвращает id
и с использованием Class::doSomething()
возвращает false
Вопрос 3:
Можно ли автоматически получить значение по умолчанию свойства в статическом контексте и значение свойства в нестатическом контексте автоматически?