浅谈PHP中的面向对象OOP中的魔术方法
一、什么是把戏要领:PHP为我们提供了一系列用__开头的函数,这些函数无需本技艺动挪用,会在吻合的机缘自动挪用,这类函数称为把戏函数。 譬喻:
二、PHP中都有那些把戏要领,以及它们的浸染:1.__construct():结构函数,new工具时自动挪用 eg: function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
} 在new新的Person工具时会自动挪用__construct()函数,将传入的参数别离赋给$name,$age。 2.__destruct():析构函数,当一个工具被烧毁前自动挪用 function __destruct(){
echo "这个工具被烧毁了";
} 同上所述,工具被烧毁时执行此把戏要领 3.__get():会见类中私有属性时自动挪用,转达读取属性名,返回$this->属性名 function __get($name){
return $this->$name;
}
} 如上代码,$name被设为私有属性后不能直接通过$this->name;的方法读取,因此必要配置__get()把戏要领来读取。 4.__set():给类的私有属性赋值时自动挪用,转达需配置的属性名,属性值 function __set($key,$value){
$this->$key=$value;
}
} 同__get()要领,私有属性不能通过$this->name="aaa";的方法直接配置,必要配置__set()要领,传入的参数别离是属性名和属性值。 5.__isset():行使isset检测工具私有属性时挪用,转达检测的属性名,返回isset($this->属性名) function __isset($name){
return isset($this->$name);
} 行使isset检测工具私有属性时挪用,其他同上。 6.__unset():行使unset()函数删除工具私有属性时挪用,转达删除的属性名,要领中执行unset($this->属性名) function __unset($name){
unset($this->$name);
}
} 同上,在用unset()函数删除私有属性时挪用。 7.__toString():行使echo打印工具时挪用,返回打印工具时想要表现的内容,返回必需是字符串 function __toString(){
$str = <<<str
您要打印的内容是:<br>
$name=>{$this->name};<br>
$age=>{$this->age};<br>
str; 行使echo打印工具时挪用,返回打印工具时想要表现的内容。 8.__call():挪用一个类中未界说的或未果真的要领时自动挪用,转达被挪用的函数名及参数列表 function __call($funcName,$funcParams){
echo "您挪用的函数{$funcName},参数列表";
print_r($funcParams);
echo "不存在/未果真";
}
} 如代码所示,挪用不存在的say(1,3);时,会打印 您挪用的函数way,参数列表Array ( [0] => 123 ) 不存在 9.__clone():当行使clone要害字,克隆一个工具时自动挪用,浸染是为新克隆的工具初始化赋值 function __clone(){
$this->name="lisi";
}
} 打印出的功效是"lisi",而不是"zhangsan"。 10.__sleep():工具序列化时自动挪用,返回一个数组,数组中的值就是可以序列化的属性 function __sleep(){return array("name","age"); } } 如上述代码,在用serialize()序列化工具时只有"name","age"属性会被序列化。 11.__wakeup():工具反序列化时自动挪用,为反序列化新发生的工具举办初始化赋值 function __wakeup(){$this -> name = "lisi"; } } 将工具序列化后再反序列化,同时给工具的name属性赋初值为"lisi"。 12.__autolode():必要在类外部声明函数,当实例化一个未声明的类时自动挪用,转达实例化的类名,可以行使类名自动加载对应的类文件。 $zhangsan=new Person(); $zhangsan->say(); 如上述代码,Person类不存在时挪用__autolode()要领,载入写在文件外的类,"class/".strtolower($className).".class.php";就是类文件的相对路径,$className就是 不在本文件中的类的类名,因此在建设外部类文件时定名方法必需是小写的类名.class.php。__autolode()要领也是惟逐一个不消写在类中的把戏要领。 以上就是PHP中的把戏要领,公道操作这些要领可以轻松实现工具的各类操纵。但愿对各人的进修有所辅佐,也但愿各人多多支持编程之家。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |