PHP基础知识 - PHP魔术方法

PHP 13 个常用魔术方法:

__construct__destruct__call 或 __callStatic__get__set__isset__unset__toString__clone__autoload__invoke__sleep__wakeup

1. __construct 构造方法

__construct 构造方法,当一个类被实例化创建对象时,会调用构造方法。


2. __destruct 析构方法

__destruct 析构方法, 当对象在销毁之前或失去对对象的引用时,会调用 析构方法。


3. __call 或 __callStatic

当调用一个未定义的或没有权限的成员方法时,会调用 __call 方法。(当在静态方法中调用一个未定义的或没有权限的成员方法时,则会调用 __callStatic 方法。)

如果本类找不到调用的成员方法,会去父类中找。

如果本类找不到 __call 方法,会去父类中找。


4. __get

当调用一个未定义的或非公有的成员属性时,会调用 __get 方法。


5. __set

当给一个未定义的或非公有的成员属性赋值时, 会调用 __set 方法。


6. __isset

当在一个未定义的或非公有的成员属性上调用 isset函数时,会调用 __isset 方法。


7. __unset

当在一个未定义或非公有的成员属性上调用 unset函数时,会调用 __unset 方法。


8. __toString

在打印输出一个对象时, 会自动调用 __toString 方法。 例: echo 对象名


9. __clone

当克隆一个对象时, 会自动调用 __clone 方法。 例: $clone_obj = clone 对象名;


10. __autoload

在实例化一个尚未被定义的类时会自动调用 __autoload 来加载类文件。


11. __invoke

当尝试以调用函数的方式调用一个对象时, 会自动调用 __invoke 方法。


12. __sleep

serialize() 函数会检查类中是否存在 __sleep 方法,如果存在,先执行 __sleep 方法,再执行 序列化操作。

<?php
    class User
	{
    	public function __sleep(){
            // 
        }
	}
    $obj = new User();
	serialize($obj);

13. __wakeup

unserialize() 函数会检查类中是否存在 __wakeup 方法,如果存在,先执行 __wakeup 方法,再执行 反序列化操作。

<?php
    class User
	{
    	public function __wakeup(){
            // 
        }
	}
    $obj = new User();
	unserialize($obj);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

后端木木

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

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

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

打赏作者

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

抵扣说明:

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

余额充值