日拱一卒无有尽,功不唐捐终入海

魔术方法(Magic Methods)之PHP面向对象编程

面向对象 Sam 678℃

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

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

1、__construct() 和 __destruct()

 

2、__tostring() 和 __invoke()

__tostring() 当对象被当做string使用时,这个方法会被自动调用  比如 echo $obj;

__invoke() 当对象被当成方法调用时,这个方法会被自动调用 比如 $obj(5);

3、__call() 和 __callStatic()

__call() 当对象访问不存在的方法名称时,__call()方法会被自动调用

__callStatic() 当对象访问不存在的静态方法名称时,__callStatic方法会被自动调用

这两个方法在PHP里面也被称为方法的重载( overloading )

——注意区分重写( overwrite )

——通过这两个方法,同一个方法的名称的调用可以对应不同的方法实现

4、__get() 和 __set()  属性重载的魔术方法

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

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

不可访问指的是没有被定义或者是private时

5、__isset() 和 __unset()  属性重载的魔术方法

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

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

不可访问指的是没有被定义或者是private时

6、__sleep() 和 __wakeup()

 

7、__clone()

 

转载请注明:PHP笔记 » 魔术方法(Magic Methods)之PHP面向对象编程

喜欢 (0)