魔术方法

来源:互联网 发布:snmp的网络管理框架 编辑:程序博客网 时间:2024/04/28 18:58
 


__construct  构造函数。 之前就说过了,这也是魔术方法中的一种,所以说,析构函数,也是!

  __construct(),__destruct(), __call(), __callStatic(),__get(), __set(), __isset(),__unset(), __sleep(), __wakeup(),__toString(), __invoke(), __set_state(),__clone() 和 __debugInfo() 等方法在 PHP 中被称为"魔术方法"(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。

  PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀

  toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR级别的致命错误。

  __sleep() 不能返回父类的私有成员的名字。这样做会产生一个E_NOTICE 级别的错误。可以用 Serializable 接口来替代。

  __sleep() 方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。

与之相反, unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。

__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。

  在给不可访问属性赋值时,__set() 会被调用。

读取不可访问属性的值时,__get() 会被调用。

当对不可访问属性调用 isset()empty()时,__isset() 会被调用。

当对不可访问属性调用 unset()时,__unset() 会被调用。

0 0