PHP魔术方法

概念

系统在特定的时候自动执行的方法

类比
  • __autoload($name)

触发时机:唯一一个卸载类外的方法,当实例化一个对象,而当前脚本没有这个类时,就会自动触发这个方法,该方法会传入当前实例化的类名。

function __autoload($name)
{
    include "./" . $name . ".php";
}
  • __get(KaTeX parse error: Expected group after '_' at position 7: name)和_̲_set(name,$value)

__get($name)

触发时机:当对象在外部访问私有成员或者受保护的成员属性时触发的方法
应用:开放特定的成员属性给外部,或者当外部获取时不因为成员私有化而报错

__set( n a m e , name, name,value)

触发时机:当对象在外部设置私有或者受保护的成员属性时调用
应用:可以规范外部对象设定值,或者当外部获取时不因为成员私有化而报错
  • __unset(KaTeX parse error: Expected group after '_' at position 7: name)和_̲_isset(name)

__unset($name)

触发时机:当对象在外部销毁私有或者受保护的成员属性时调用
应用:开放部分成员属性给外部销毁,或者当外部销毁时不因为成员私有化而报错

__isset($name)

触发时机:当对象在外部判断属性是否被设置时,而成员为私有或者受保护时调用
应用:开发部分成员属性的判断,在__isset()方法里返回isset($this-$name)即可,不设定的话,就算__set()开放了该属性也会返回false,但不会报错
  • __construct()构造方法和__destruct()析构方法

__construce()

触发时机:当创建对象的时候调用
应用:初始化对象的成员

__destruct()

触发时机:对象销毁的时候触发的方法
应用:监听对象被销毁时做操作
  • __toString()和__debugInfo()

__toString()

触发时机:当使用echo打印对象时调用
应用:当echo对象时可以通过该方法返回指定的字符串

__debugInfo()

触发时机:当使用var_dump打印对象时调用
应用:当var_dump对象时可以通过该方法返回指定的数组
  • __call($name, $arguments)和__callStatic()

__call($name, $arguments)

触发时机:当对象调用不存在的成员方法或者不是公共的方法时调用
应用:可以开发部分受保护的方法,也可以通过该方法设定自定义的方法给外部调用

__callStatic($name, $arguments)

触发时机:当对象调用不存在的静态方法或者不是公共的方法时调用
应用:可以开发部分受保护的方法,也可以通过该方法设定自定义的方法给外部调用
  • __sleep()和__wakeup()

__sleep()

触发时机:当序列化一个对象时候被调用
应用:可以将指定的属性成员序列化,要将指定的成员名称作为一个数组返回

__wakeup()

触发时机:当反序列化一个对象时候被调用
  • __clone()
触发时机:当克隆一个对象的时候调用
应用:可以在这个方法里修改克隆后的属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

spydxk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值