Как заставить производные классы включать статическое свойство?

Как применить правило, согласно которому производные классы должны содержать некоторое статическое свойство или значение?

в этом примере я хочу убедиться, что каждый класс, который расширяет 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;
}

1

Решение

Ты не можешь 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 который работает так же.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector