首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -扩展__construct

PHP -扩展__construct
EN

Stack Overflow用户
提问于 2010-08-13 21:26:48
回答 3查看 33.2K关注 0票数 39

我想知道你能不能帮帮我..

我有两个类,一个扩展了另一个。类B将通过各种不同的对象进行扩展,并用于常见的数据库交互。现在我想让类B在没有来自类A或任何外部输入的情况下处理它的连接和断开。

据我所知,问题是扩展类不会自动运行它的__construct函数。有什么办法可以解决这个问题吗?

提前谢谢..

代码语言:javascript
复制
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;
   }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-13 22:01:35

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

代码语言:javascript
复制
class a extends b { 
} 

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

$x = new a();

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

代码语言:javascript
复制
class a extends b { 
   public function __construct() 
   { 
      echo 'In A Constructor'; 
   } 
} 

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

$x = new a();

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

代码语言:javascript
复制
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();
票数 99
EN

Stack Overflow用户

发布于 2010-08-13 21:29:04

我不确定我是否完全理解您的要求,但是您可以从孩子的构造函数中调用parents construct方法

代码语言:javascript
复制
parent::__construct();

这是我所知道的唯一选择。

票数 13
EN

Stack Overflow用户

发布于 2010-08-13 21:29:36

a::__construct()中调用parent::__construct()

代码语言:javascript
复制
class a extends b
{
   public function __construct()
   {
       parent::__construct();
   }   

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

如果你没有做任何特定于a的事情,你可以完全省略a的构造函数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3477224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档