__construct()
是类的构造方法。如果您从中声明一个新的对象实例,它就会运行。然而,如果一个类实现了它自己的__construct()
,PHP 将只运行它自己的构造函数,而不是它的父类的构造函数。例如:
<?php
class A {
public function __construct() {
echo "run A's constructor\n";
}
}
class B extends A {
public function __construct() {
echo "run B's constructor\n";
}
}
// only B's constructor is invoked
// show "run B's constructor\n" only
$obj = new B();
?>
在这种情况下,如果您需要在声明 $obj 时运行类 A 的构造函数,则需要使用parent::__construct()
:
<?php
class A {
public function __construct() {
echo "run A's constructor\n";
}
}
class B extends A {
public function __construct() {
parent::__construct();
echo "run B's constructor\n";
}
}
// both constructors of A and B are invoked
// 1. show "run A's constructor\n"
// 2. show "run B's constructor\n"
$obj = new B();
?>
在 CodeIgniter 的例子中,该行运行 CI_Controller 中的构造函数。该构造函数方法应该以某种方式帮助您的控制器代码。你只希望它为你做所有事情。