Как применить правило, согласно которому производные классы должны содержать некоторое статическое свойство или значение?
в этом примере я хочу убедиться, что каждый класс, который расширяет Parent, должен содержать статическую переменную $ foo
abstract class Parent{
// Trying to enforce that all derived classes must contain a static $foo;
static protected $foo;
public function getFoo(){
return get_class($this)::$foo;
}
}
class Child extends Parent{
static protected $foo = 0;
}
Ты не можешь abstract
свойство класса, однако в этом случае, вероятно, лучше сделать следующее:
abstract class Parent{
abstract public function getFoo();
}
class Child extends Parent{
private $foo = 0;
public function getFoo(){
return $this->foo;
}
}
В качестве дополнительной заметки для вас, чтобы узнать в будущем, где вы сделали get_class($this)::$foo
это не обязательно, и вы можете просто сделать static::$foo
который работает так же.
Других решений пока нет …