PHP中的魔术方法如何使用

  介绍

这篇文章将为大家详细讲解有关PHP中的魔术方法如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

魔术方法是PHP面向对象中特有的特性。它们在特定的情况下被触发,都是以双下划线开的头,你可以把它们理解为钩子,利用模式方法可以轻松实现PHP面向对象中重载(重载即动态创建类属性和方法)。魔术方法很多还是成对出现的,以下列出目前PHP中所有的模式方法。

<强> 1. __construct __destruct

__constuct构建对象的时被调用;
__destruct明确销毁对象或脚本结束时被调用;

<强> 2. __get __set

__set当给不可访问或不存在属性赋值时被调用
__get读取不可访问或不存在属性时被调用

<强> 3. __isset __unset

__isset对不可访问或不存在的属性调用收取空()或()时被调用
__unset对不可访问或不存在的属性进行设置时被调用

<强> 4. __call __callStatic

__call调用不可访问或不存在的方法时被调用
__callStatic调用不可访问或不存在的静态方法时被调用

<强> 5. __sleep __wakeup

__sleep当使用序列化时被调用,当你不需要保存大对象的所有数据时很有用
__wakeup当使用非系列化时被调用,可用于做些对象的初始化操作

<强> 6. __clone

进行对象克隆时被调用,用来调整对象的克隆行为

<强> 7. __tostring

当一个类被转换成字符串时被调用

<强> 8. __invoke

当以函数方式调用对象时被调用

<强> 9. __set_state

当调用var_export()导出类时,此静态方法被调用。用__set_state的返回值做为var_export的返回值。

<强> 10. __debuginfo

当调用var_dump()打印对象时被调用(当你不想打印所有属性)适用于PHP5.6版本

PHP魔术方法使用实例如下:

& lt; PHP ?   ,   魔法class    {   public 才能;var 美元;=,& # 39;测试# 39;;   ,//才能构造函数,在创建对象的时候调用   public 才能;function  __construct ()   {才能   ,,,echo  & # 39; __construct 叫# 39;.PHP_EOL;   ,,}   ,//某才能个对象的引用都被删除,对象被销毁,调用exit()后,脚本关闭时被调用   public 才能;function  __destruct ()   {才能   ,,,echo  & # 39; __destruct 叫# 39;.PHP_EOL;   ,,}   ,//当才能给不可访问或不存在属性赋值时被调用   public 才能;function  __set(名称、美元,美元值)   {才能   ,,,echo 美元名字# 39;公司& # 39;。美元价值;   ,,,echo  & # 39; __set 叫# 39;.PHP_EOL;   ,,}   ,//读才能取不可访问或不存在属性时被调用   public 才能;function  __get(名称)   {才能   ,,,echo 美元名称;   ,,,echo  & # 39; __get 叫# 39;.PHP_EOL;   ,,}   ,//调才能用不可访问或不存在的方法时被调用   public 才能;function  __call(名称、美元,美元参数)   {才能   ,,,echo  name 美元;只& # 39;& # 39;,只内爆(& # 39;& # 39;,,美元参数);   ,,,echo  & # 39; __call 叫# 39;.PHP_EOL;   ,,}   ,//调才能用不可访问或不存在的静态方法时被调用   public 才能static  function  __callStatic(名称、美元,美元参数)   {才能   ,,,echo  name 美元;只& # 39;& # 39;,只内爆(& # 39;& # 39;,,美元参数);   ,,,echo  & # 39; __callStatic 叫# 39;.PHP_EOL;   ,,}   ,//对才能不可访问或不存在的属性调用收取空()或()时被调用   public 才能;function  __isset(名称)   {才能   ,,,echo 美元名称;   ,,,echo  & # 39; __isset 叫# 39;.PHP_EOL;   ,,,return 真实;   ,,}   ,//对才能不可访问或不存在的属性进行设置时被调用   public 才能;function  __unset(名称)   {才能   ,,,echo 美元名称;   ,,,echo  & # 39; __unset 叫# 39;.PHP_EOL;   ,,}   ,//序列化时才能被调用,当你不需要保存大对象的所有数据时很有用   public 才能;function  __sleep ()   {才能   ,,,echo  & # 39; __sleep 叫# 39;.PHP_EOL;   ,,,return 数组(& # 39;var1111111111& # 39;);   ,,}   ,//unserialize时才能被调用,可用于做些对象的初始化操作   public 才能;function  __wakeup ()   {才能   ,,,echo  & # 39; __wakeup 叫# 39;.PHP_EOL;   ,,,这个→美元var =, & # 39; test  after 唤醒# 39;;   ,,}   ,//才能当一个类被转换成字符串时被调用   public 才能;function  __toString ()   {才能   ,,,return  & # 39; __toString 叫# 39;.PHP_EOL;   ,,}   ,//才能进行对象克隆时被调用,用来调整对象的克隆行为   public 才能;function  __clone ()   {才能   ,,,echo  & # 39; __clone 叫# 39;.PHP_EOL;   ,,}   ,//当才能以函数方式调用对象时被调用   public 才能;function  __invoke ()   {才能   ,,,echo  & # 39; __invoke 叫# 39;.PHP_EOL;   ,,}   ,//当才能调用var_export()导出类时,此静态方法被调用。用__set_state的返回值做为var_export的返回值。   public 才能static  function  __set_state (arr)美元   {才能   ,,,return  & # 39; __set_state 叫# 39;.PHP_EOL;   ,,}   ,//当才能调用var_dump()打印对象时被调用(当你不想打印所有属性)适用于PHP5.6版本   public 才能;function  __debuginfo (arr)美元   {才能   ,,,echo  & # 39; __debuginfo 叫# 39;.PHP_EOL;   ,,,return 阵列(   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

PHP中的魔术方法如何使用