为什么调用父级的构造函数



我有最简单的代码:

接口

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)
  {
  }
}

最新更新