PHP-扩展的_构造

PHP-扩展的_构造,php,class,constructor,extends,Php,Class,Constructor,Extends,我想知道你是否能帮我 我有两个班,一个扩展另一个。。B类将通过各种不同的对象进行扩展,并用于公共数据库交互。。现在我想让B类处理它的连接和断开,而不需要来自A类或任何外部输入的指示 据我所知,问题是扩展类不会自动运行其_构造函数。。有办法解决这个问题吗 提前谢谢 class a extends b { public function __construct() { } public function validateStuff() { $this

我想知道你是否能帮我

我有两个班,一个扩展另一个。。B类将通过各种不同的对象进行扩展,并用于公共数据库交互。。现在我想让B类处理它的连接和断开,而不需要来自A类或任何外部输入的指示

据我所知,问题是扩展类不会自动运行其_构造函数。。有办法解决这个问题吗

提前谢谢

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;
   }
}

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

parent::__construct();

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

a::\u-construct()
中调用
parent::\u-construct()


如果您没有执行任何特定于a的操作,则可以完全省略a的构造函数。

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

class a extends b { 
} 

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

$x = new a();
如果类a中定义了
\uuu构造()
方法,则这将覆盖类b中
\uu构造()
方法的使用。。。。它将运行而不是类b
\uu construct()
方法

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

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

$x = new a();
因此,如果您的子类定义了一个
\uu 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();

我根本不想从类a调用构造函数。。我希望找到一个方法来应用b类的构造函数自动运行..啊,这就是答案。。将构造函数从类A中排除,类B就运行了!谢谢我根本不想从类a调用构造函数。。我希望找到一个方法来应用b类的构造函数自动运行。谢谢:)-stackoverflow非常擅长拥有和查找相关信息,您可以沉迷于这样的工作流中,“就像,我知道这一点,但我只是想确保我没有在某个地方遇到PHP直觉上的小怪癖”-谢谢哈哈!
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();