为什么要调用 parent 的构造函数
Why is the parent's constructor being called
我有最简单的代码:
界面
interface iCrudRepository{
public function Create($id);
public function Read($id);
public function Update($id);
public function Delete($id);
}
Parent
class Repository
{
function __construct()
{
echo "SHOULD NOT BE CALLED AUTOMATICALLY";
}
}
Class
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
class 通过 spl_autoload_register
函数自动加载我的 classes。由于在 Admin
class 中我没有调用 parent 构造函数,它不应该执行 parent 构造函数中的内容,对吗?
输出
SHOULD NOT BE CALLED AUTOMATICALLY
这里可能遗漏了一些明显的东西,但不太明白为什么叫它。
Docs 状态:
Parent constructors are not called implicitly if the child class
defines a constructor.
所以你必须这样做以防止你看到的东西:
class Admin extends Repository implements iCrudRepository
{
public function __construct()
{
}
function Create($id)
{
}
function Read($id)
{
}
function Update($id)
{
}
function Delete($id)
{
}
}
我有最简单的代码:
界面
interface iCrudRepository{
public function Create($id);
public function Read($id);
public function Update($id);
public function Delete($id);
}
Parent
class Repository
{
function __construct()
{
echo "SHOULD NOT BE CALLED AUTOMATICALLY";
}
}
Class
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
class 通过 spl_autoload_register
函数自动加载我的 classes。由于在 Admin
class 中我没有调用 parent 构造函数,它不应该执行 parent 构造函数中的内容,对吗?
输出
SHOULD NOT BE CALLED AUTOMATICALLY
这里可能遗漏了一些明显的东西,但不太明白为什么叫它。
Docs 状态:
Parent constructors are not called implicitly if the child class defines a constructor.
所以你必须这样做以防止你看到的东西:
class Admin extends Repository implements iCrudRepository
{
public function __construct()
{
}
function Create($id)
{
}
function Read($id)
{
}
function Update($id)
{
}
function Delete($id)
{
}
}