PHP魔术方法
PHP定义类时以两个下划线定义的方法(__)开头的方法都是魔术方法,时PHP预先定义好的.不建议定义方法时使用两个下划线开头
1.__construct() 构造方法
执行时机:在使用new关键字使用类实例化一个对象时自动执行
功能作用:通常是对对象的属性进行初始化
用法例子:
class Person{
//类的成员属性
public $name;
public $age;
//构造对象的方法
public function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
}
$p1 = new Person('李四',20);
如何记住:construct 含义:构成;修建;建造; 读音: [knstrkt] ,可以理解为构造对象的方法,在构造对象时自动执行。
2.__destruct()析构方法
执行时机:在对象被销毁(unset或PHP执行结束)时自动执行
功能作用:通常用于对象占用的第三方资源(如:数据库)
用法:
class Person{ //类的成员属性 public $name; public $age; //构造对象的方法 public function __construct($name,$age){ $this->name=$name; $this->age=$age; } //析构方法 public function __destruct(){ print '对象被销毁'; } } $p1 = new Person('李四',20); unset($p1);//注意:删除对象时会自动执行类中的__destruct()析构方法 如何记住:destruct 含义:破坏;破坏的
3.__toString()转换字符串
执行时机:在对象被当成字符串使用时执行
功能作用:兼容对象的字符串调用形式,根据用户需求显示出对象的字符串形态
用法示例:
class Person{ //类的成员属性 public $name; public $age; //构造对象的方法 public function __construct($name,$age){ $this->name=$name; $this->age=$age; } //析构方法 public function __toString(){ return $this->name; } } $p1 = new Person('张三',19); echo $p1."失踪"; //当对象当成字符串使用时,自动执行__toString方法
如何记住:toString 含义:to到;向,朝着; String 字符串;
4. __invoke()函数调用方法
执行时机:在对象被当成函数使用时自动执行
功能作用:兼容对象的函数调用形式,允许用户使用函数一样使用对象
用法:
class Person{ //类的成员属性 public $name; public $age; //构造对象的方法 public function __construct($name,$age){ $this->name=$name; $this->age=$age; } //对象调用的魔术方法,将对象函数使用执行 public function __invoke(){ echo "姓名:$this->name,年龄:$this->age"; } } $p1 = new Person('张三',19); $p1();//队形当成函数名执行时自动执行__invoke()方法;
如何记住:invoke 含义:援引;乞灵;祈求;
5.__clone() 克隆方法
执行时机:在克隆对象时执行
功能作用:在克隆对象时执行可以同时进行一些其他操作,甚至可以阻止对象被克隆
用法实列:
class Person{ //类的成员属性 public $name; public $age; //构造对象的方法 public function __construct($name,$age){ $this->name=$name; $this->age=$age; } //定义克隆方法,在克隆对象自动调用 public function __clone(){ echo "谁在克隆我啊?<br/>"; } } $p1 = new Person('张飞',20); $p2 = clone $p1;
如何记住:clone 含义:复制;克隆
https://baijiahao.baidu.com/s?id=1607667991000169190&wfr=spider&for=pc

浙公网安备 33010602011771号