失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php 继承类构造函数 PHP类构造函数继承性问题

php 继承类构造函数 PHP类构造函数继承性问题

时间:2021-10-05 06:19:16

相关推荐

php 继承类构造函数 PHP类构造函数继承性问题

PHP类的构造函数格式为__construct(){},(比较旧的PHP版本中构造函数与类函数同名)默认为可继承,当然也可以设置为private私有的,即

private function __construct() {

}

当设置为private时,该类不可以被继承(不可以被扩展)。构造函数的私有性在单例模式中得到了充分的应用,这个会在接下来的文章中提到。

当子类自身有构造函数时,子类不会继承父类的构造函数,若想继承,则需要在子类中定义:

public function __construct() {

parent::__construct();

}

此处举一个我在学CI框架时遇到的一个问题,我定义了一个Test类,并在Test的构造函数中 加载了 来自父类的方法 $this->load->helper(‘url’);于是就报错了。

Message: Undefined property: Test::$load

Fatal error: Call to a member function helper() on null inD:\XAMP\htdocs\CI\application\controllers\Test.phpon line4

原因是定义了子类的构造函数,则不会继承父类的构造函数,正确的写法应该如下,

class Test extends CI_Controller {

public function __construct() {

parent::__construct();//继承父类的构造函数

$this->load->helper('url');

}

public function hello() {

echo site_url('Test/hello');

}

}

若子类自身没有构造函数,则会自动调用父类的构造函数,

class Pet {

function __construct($pet_name) {

echo $pet_name;

}

}

class Cat extends Pet {

}

$ca = new Pet('K');//输出K

$cat = new Cat('Ke阿猫');//输出Ke阿猫

总结,在PHP中,当子类集成了父类,若子类没有构造函数,则继承父类的构造函数,若子类有自身的构造函数,则不继承,若需继承,则需在自身构造函数内引用

parent::__construct();

微信订阅号

如果觉得《php 继承类构造函数 PHP类构造函数继承性问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。