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