Почему вызывается конструктор родителя

У меня есть простейшая часть кода:

Интерфейс

interface iCrudRepository{
public function Create($id);
public function Read($id);
public function Update($id);
public function Delete($id);
}

родитель

class Repository
{
function __construct()
{
echo "SHOULD NOT BE CALLED AUTOMATICALLY";
}
}

Учебный класс

require_once(__DIR__.'/../injection/bootstrap.php');

class Admin extends Repository implements iCrudRepository
{
function Create($id)
{
}

function Read($id)
{
}

function Update($id)
{
}

function Delete($id)
{
}
}

$admin = new Admin();
$admin->Create("Something");

bootstrap класс загружает мои классы через spl_autoload_register функция. Так как в Admin класс, который я не вызываю родительский конструктор, он не должен выполнять то, что в родительском конструкторе, верно?

Выход

SHOULD NOT BE CALLED AUTOMATICALLY

Вероятно, здесь упущено что-то очевидное, но я не могу понять, почему это называется.

0

Решение

Документы государство:

Родительские конструкторы не вызываются неявно, если дочерний класс
определяет конструктор.

Таким образом, вы должны сделать это, чтобы предотвратить то, что вы видите:

class Admin extends Repository implements iCrudRepository
{
public function __construct()
{

}
function Create($id)
{
}

function Read($id)
{
}

function Update($id)
{
}

function Delete($id)
{
}
}
1

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

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

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