Статические методы и наследование

Духовность™

Продвинутый новичок
Статические методы и наследование

PHP:
class a
{
    public function __construct() {}
    
    public static function getObject()
    {
        $c = __CLASS__;
        $class =  new $c();
        return $class;
    }
}

class b extends a
{
    var $str;
    
    public function __construct()
    {
        $this->str = 'Привет';
    }
}

$obj = b::getObject();
echo $obj->str;
почему это не работает? статические методы при наследовании не наследуются?
 

AmdY

Пью пиво
Команда форума
а как ты думаешь что у тебя в __CLASS__
и для чего вводят позднее статическое связывание
 

Ravanger

Новичок
А откуда у класса "а" вдруг возьмется пропертя str ?

---
нафлудили пока писал )
 

Духовность™

Продвинутый новичок
Ravanger
не в проперте дело, а в том, что __CLASS__ в статическом методе указывает исключительно на базовый класс.
 

Ravanger

Новичок
triumvirat
Потому, что LSB )))

у тебя __СLASS__ определяется на этапе трансляции, что есть раньше выполнения
 
Сверху