背景
这里记录下PHP中构造函数的注意点。
这里和C/C++、Java不一样,比较灵活,估计是有隐式调用,在此不研究了,记录下注意的地方。
演示
如下项目:
Base.php
<?phpclass Base{public function __construct(){echo "__construct() : " . __CLASS__ . "<br/>";}}
Child.php
<?phpclass Child extends Base{public function __construct(){echo "__construct() : " . __CLASS__ . "<br/>";}
}
call.php
<?php
include "Base.php";
include "Child.php";$base = new Child();
上面代码的运行截图:
从中可见只有子类的构造函数被调用了。修改Base.php如下:
<?phpclass Child extends Base{}
运行截图如下:
变成了调用父类。
改成这样后:
<?phpclass Child extends Base{public function __construct(){echo "__construct() : " . __CLASS__ . "<br/>";parent::__construct();}
}
运行截图:
变成了先子类构造函数,再父类构造函数。
改成这样后:
<?phpclass Child extends Base{public function __construct(){parent::__construct();echo "__construct() : " . __CLASS__ . "<br/>";}
}
运行截图:
先父类构造函数,再子类构造函数
结束
PHP中的构造函数比较灵活,和C/C++、Java语言先比,感觉是构造函数+子类函数重写的功能合二唯一。
这里要注意,避免以后在开发PHP时遇到问题。