У меня есть класс с именем Foo
с конструктором, и я хочу, чтобы одна его переменная являлась именем дочернего класса.Auto init статического класса, который расширяет родительский
Пример:
class Foo {
protected static $name;
protected static $something;
public function __construct($something) {
self::$something = $something;
self::$name = strtolower(__CLASS__);
}
static public function hello() {
echo self::$name;
}
}
class Bar extends Foo {}
new Foo('lazy');
Bar::hello();
Результат будет всегда foo()
, потому что конструктор вызывается только new Foo()
.
Итак, каков путь? Есть ли волшебный метод, вызываемый при вызове статического метода? Извините за плохое объяснение.
https://eval.in/569930 – splash58
Спасибо, но это не решит. Мне нужно сохранить его в переменной без вызова каждый раз, когда функция. Здравствуйте, нужно быть просто зрителем переменной, а не гипнотическим сеттером. – Grork
* Мне нужно сохранить его в переменной * - когда это произойдет, если вы не захотите вызвать конструкцию? – splash58