写出几个魔术方法,并指出什么情况下被调用。

PHP 基础面试题
1
1
分享
推荐答案
展示答案

__construct 构造函数,在每次创建新对象时先调用此方法,适合在使用对象之前做一些初始化工作。 __destruct 析构函数,对象销毁时调用。 __call 方法重载,在对象中调用一个不可访问的方法时被调用。 __callStatic 方法重载,在对象中调用一个不可访问的静态方法时被调用。 __get 属性重载,读取不可访问属性的值时被调用。 __set 属性重载,在给不可访问属性赋值时被调用。 __isset 属性重载,当对不可访问属性调用isset或empty函数时被调用。 __unset 属性重载,当对不可访问属性调用unset函数时被调用。 __sleep 序列化对象前被调用。可用于清除对象敏感属性,比如类里包含密码的mysql连接信息,可以在serialize函数执行前清除掉,防止被序列化到数据库中造成泄漏。 __wakup 反序列化对象前被调用。 __toString 输出对象时被调用。如echo $obj,会调用此魔术方法。 __invoke 当尝试以调用函数的方式调用一个对象时被调用。 __autoload 当调用未定义的类时被调用。php7.2.0起已废弃。 __set_state 当调用var_export导出类时被调用。 __clone 对象复制完成时,新对象中的__clone会被调用。 __debugInfo 当调用var_dump函数输出调试信息时被调用。

答案已隐藏