PHP所有魔术方法及其用法

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

  1. 1、__construct()

        构造函数:PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。

  1. 2、__destruct()
        

        析构函数:PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

  1. 3、__call()

        在对象中调用一个不可访问方法时,__call() 会被调用。

  1. 4、__callStatic()

        在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用。

  1. 5、__get()

    

  1. 6、__set()

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

  1. 7、__isset()

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

  1. 8、__unset()

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

  1. 9、__sleep()

        serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。

  1. 10、__wakeup()

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

  1. 11、__toString()

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

  1. 12、__invoke()

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

  1. 13、__set_state()

        当调用 var_export() 导出类时,此静态 方法会被调用。

  1. 14、__clone()

        当复制完成时,如果定义了 __clone() 方法,则新创建的对象(复制生成的对象)中的 __clone() 方法会被调用,可用于修改属性的值(如果有必要的话)。

  1. 15、__debugInfo()

        当调用var_dump函数打印类时会调用__debugInfo

文 / Admin
评论
金玉良言
loading