我有最简单的代码:
接口
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 :(得分:1)
Docs州:
如果子类,则不会隐式调用父构造函数 定义了一个构造函数。
所以你必须这样做才能阻止你所看到的:
class Admin extends Repository implements iCrudRepository
{
public function __construct()
{
}
function Create($id)
{
}
function Read($id)
{
}
function Update($id)
{
}
function Delete($id)
{
}
}