У меня есть родительский класс:
abstract class UiElement
{
protected static ?string $template_name = null;
public function __construct() {
if(static::$template_name == null) {
throw new Exception("static \$template_name has not been set in child class", 1);
}
}
}
теперь у меня есть дочерний класс так:
class EmptyContent extends UiElement
{
protected static ?string $template_name = 'empty-content';
public function __construct() {
parent::__construct();
}
}
и назовите это так:
$empty = new EmptyContent();
Я хочу убедиться, что дочерний класс в этом случае EmptyContent
устанавливает значение, отличное от нуля, при определении этого класса. Итак, я делаю проверку в конструкторе родительского класса, но это дает мне следующую ошибку:
Неустранимая ошибка: Uncaught Exception: static $template_name не было установлено в дочернем классе в /Applications/MAMP/htdocs/private_projects/Foodio/App/index.php:108 Трассировка стека: #0/Applications/MAMP/htdocs/private_projects/Foodio /App/index.php(126): UiElement-›__construct() #1 /Applications/MAMP/htdocs/private_projects/Foodio/App/index.php(134): сбой-›__construct() #2 {main} брошен в
Насколько я понимаю, это связано с тем, что свойство $template_name
еще не инициализировано при запуске конструктора родителя.
Как мне это сделать?
Если нужна дополнительная информация или уточнение, дайте мне знать, чтобы я мог добавить ее!