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

posted @ 2020-05-26 09:53  野香蕉  阅读(38)  评论(0)    收藏  举报