您现在的位置是:首页 > web开发 > PHP面向对象 –魔术方法

PHP面向对象 –魔术方法

web开发作者:dayu日期:9天前点击:5

__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面向对象 –魔术方法

原文地址:http://www.cnblogs.com/limingxishuai666/p/7223745.html


下一篇       上一篇