企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
#### 构造函数 `void __constuct()` 创建一个对象时(`new`操作),构造函数会自动调用 ~~~php class A { public function __construct() { echo 'init...'.PHP_EOL; } public function sayHi() { echo "hi"; } } (new A())->sayHi(); ~~~ 输出结果为 ~~~bash init... hi ~~~ 实例化 A 的时候执行构造函数。 注意: 如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::\_\_construct()。 ~~~php <?php class A { public function __construct() { echo "A"; } } class B extends A { public function __construct() { parent::__construct(); echo "B"; } } new A(); // A new B(); // AB ~~~ #### 析构函数 `void __destruct(void)` 析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。 ~~~php <?php class A { public function __construct() { echo 'Start...'; } public function sayHi() { echo "Hi..."; } public function __destruct() { echo "Finish"; } } (new A())->sayHi(); // Start...Hi...Finish ~~~ 和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用`parent::__destruct()`。 析构函数即使在使用`exit()`终止脚本运行时也会被调用。在析构函数中 调用`exit()`将会中止其余关闭操作的运行。