PHP面向对象 –魔术方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP面向对象 –魔术方法相关的知识,希望对你有一定的参考价值。

__construct() 构造函数

__destruct() 析构函数

__sleep()    serialize序列化时调用

__wakeup()  unserialize反序列化时调用

__clone()       检测克隆对象

属性重载的魔术方法:

set,get,sset,unset

__set()          当为不可访问的属性赋值时,会被自动调用 会得到两个参数,当前操作的属性名和属性值!

                    典型的,__set作用,用于严格控制对象结构,和批处理可以被修改的属性!

__get()         

当访问不可访问的属性时,会被自动调用

需要的参数是:一个,为当前操作的属性名

__unset()

在删除一个不可访问的属性时,可以自动被调用!

需要一个参数 当前操作的属性名。

此时就可以利用业务逻辑完成 属性的删除处理!

__isset()

在判断一个不可访问的属性是否存在时,被自动调用

需要一个参数,属性名

注意,此函数需要返回true,或者false,表示属性是否存在:

方法重载的魔术方法:

__call()

当访问一个不可访问的对象方法时,会触发当前的魔术方法!

需要的参数:

2个参数,第一是当前的方法名,第二是调用时使用的实参列表!

典型的作用,

第一, 给出友好的提示

第二, 执行默认操作!

static __callStatic()

与 __call类似,当静态调用一个不可访问的方法时,会自动执行!

 

魔术方法,magic method

 

在特定的情况下,会被自动调用的方法,通常负责完成某块独立的功能的方法称之为魔术方法!

特点:

1,需要用户脚本定义,不定义不执行!

2,命名方式都是以__开头!

 

 

 

总结:

 

__construct

 

__destruct

 

__sleep

 

__wakeup

 

__set

 

__get

 

__isset

 

__unset

 

__clone

 

__call

 

__callStatic

 

 

 

__autoload()//魔术函数

 

 

 

 

__invoke()

 

将一个对象,当作函数调用时,会触发该对象的__invoke()方法,由此方法,就可以调用,没有该方法就不能调用!

 

回想匿名函数

为什么,匿名函数对象(Closure类对象)可以,但是普通类对象不行?

php内置Closure类中有__invoke()方法:__invoke是 php实现匿名函数  不可或缺的部分!

 

__toString()

 

转换到字符串的意思!

 

当将对象当作字符串使用时,会自动调用该对象的魔术方法!

以上是关于PHP面向对象 –魔术方法的主要内容,如果未能解决你的问题,请参考以下文章

PHP面向对象魔术方法基本了解

PHP面向对象 –魔术方法

PHP中的面向对象OOP中的魔术方法

PHP中的面向对象OOP中的魔术方法

PHP中的面向对象OOP中的魔术方法

PHP面向对象的魔术方法