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
- 2952 reads