php Переопределение конструктра и области видимости: Fatal error: Access level to ::__construct() must be public (as in class .
Primary tabs
Следующий ниже пример работает в php 7.2, но не работает в предыдущих версиях (изменение области видимости конструтора):
<?php /** * Наследник: Синглтон */ abstract class User extends Model { public final static function get() { static $instance = null; // статическая переменная if (null === $instance) { // проверка существования $instance = new static(); } return $instance; } protected function __construct() { parent::__construct(); } } /** * Родитель: Обычный класс */ class Model { public function __construct($data = null) {} }
Таким образом, php 7.2 позволяет делать конструктор наследника более закрытым, чем конструктор родителя.
- Log in to post comments
- 2771 reads