PHP - 扩展的 __construct

标签 php class constructor extends

我在想你能不能帮我一下..

我有两个类,一个扩展另一个。B 类将由各种不同的对象扩展并用于常见的数据库交互。现在我希望 B 类处理它的连接和断开连接,而无需来自 A 类或任何外部输入..

据我了解,问题是扩展类不会自动运行其 __construct 函数。有解决办法吗?

提前致谢..

class a extends b
{
   public function __construct()
   {
   }   

   public function validateStuff()
   {
      $this->insert_record();
   }
}

class b
{
   public function __construct()
   {
      $this->connect();
   }

   protected function connect()
   {
      return true;
   }

   public function insert_record()
   {
      return true;
   }
}

最佳答案

类b中定义的父类__construct()方法如果实例化子类a会自动运行,除非__construct() 类 a 中定义的方法。

class a extends b { 
} 

class b { 
   public function __construct() 
   { 
      echo 'In B Constructor'; 
   } 
} 

$x = new a();

如果在 a 类中定义了 __construct() 方法,那么这会覆盖在 b 类中使用 __construct() 方法....它将运行而不是类b __construct()方法

class a extends b { 
   public function __construct() 
   { 
      echo 'In A Constructor'; 
   } 
} 

class b { 
   public function __construct() 
   { 
      echo 'In B Constructor'; 
   } 
} 

$x = new a();

因此,如果您的子类定义了 __construct() 方法,那么如果您也想执行该方法,则需要显式调用父类的构造函数。

class a extends b { 
   public function __construct() 
   { 
      parent::__construct();
      echo 'In A Constructor'; 
   } 
} 

class b { 
   public function __construct() 
   { 
      echo 'In B Constructor'; 
   } 
} 

$x = new a();

关于PHP - 扩展的 __construct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3477224/

相关文章:

java - java构造函数中的参数很多

c++ - 析构函数调用的次数比我预期的多

php - 单独模块中的 Laravel 5 Assets 和 lang 文件夹

php - 如何正确使用连接/子查询从多个表中选择数据? (PHP-MySQL)

php - 自定义主题显示通知 undefined variable : wp_query in function. php

C++ 成员函数未在我的模板类中声明错误

php - 货币的浮点精度 : using "round" function in MySQL query vs PHP vs Javascript

Java:何时创建*任何*类的监听器?

c++ - C++ 中的玛雅日历

java - 什么是初始化 block ?