У меня есть простейшая часть кода:
Интерфейс
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
Вероятно, здесь упущено что-то очевидное, но я не могу понять, почему это называется.
Документы государство:
Родительские конструкторы не вызываются неявно, если дочерний класс
определяет конструктор.
Таким образом, вы должны сделать это, чтобы предотвратить то, что вы видите:
class Admin extends Repository implements iCrudRepository
{
public function __construct()
{
}
function Create($id)
{
}
function Read($id)
{
}
function Update($id)
{
}
function Delete($id)
{
}
}
Других решений пока нет …