PHP构造函数和析构函数

介绍

在面向对象的编程术语中,构造函数是在类内部定义的方法,在创建对象时会自动调用该方法。构造方法的目的是初始化对象。在PHP中,特殊名称 __construct的方法充当构造函数。

语法

__construct ([ mixed $args = "" [, $... ]] ) : void

构造函数示例

这个例子表明构造函数在声明对象时自动执行

示例

<?php
class myclass{
   function __construct(){
      echo "object initialized";
   }
}
$obj=new myclass();
?>

输出结果

这将产生以下结果。-

object initialized

带参数的构造函数

类属性由构造函数使用参数初始化

示例

<?php
class rectangle{
   var $height;
   var $width;
   function __construct($arg1, $arg2){
      $this->height=$arg1;
      $this->width=$arg2;
   }
   function show(){
      echo "Height=$this->height Width=$this->width";
   }
}
$obj=new rectangle(10,20);
$obj->show();
?>

输出结果

这将产生以下结果。-

Height=10 Width=20

继承中的构造函数

如果父类中定义了构造函数,则可以通过parent::__ construct在子类的构造函数中调用它。但是,如果子类未定义构造函数,则它从基类继承相同的子类。

示例

<?php
class a{
   function __construct(){
      echo "this is a constructor of base class\n";
   }
}
class b extends a{
   function __construct(){
      parent::__construct();
      echo "this a constructor class b\n";
   }
}
class c extends a {
   //
}
$a=new a();
$b=new b();
$c=new c();
?>

输出结果

这将产生以下结果。-

this is a constructor of base class
this is a constructor of base class
this a constructor class b
this is a constructor of base class

析构函数

垃圾回收器发现特定对象不再具有引用后,析构函数将自动运行。在PHP中,析构函数方法名为 __destruct。在关机顺序中,对象也将被破坏。析构函数方法不带任何参数,也不返回任何数据类型

示例

<?php
class myclass{
   function __construct(){
      echo "object is initialized\n";
   }
   function __destruct(){
      echo "object is destroyed\n";
   }
}
$obj=new myclass();
?>

输出结果

这将显示以下结果

object is initialized
object is destroyed