php 魔术方法
1、魔术方法 __set
触发时机: 类中声明多个私有属性重新赋值时
作用: 在程序运行过程中未私有的成员属性设置值
参数: @string name 成员属性名@mixed value 成员属性值
返回值:有,数组类型,每个元素都是一个成员属性值
注意事项:如果不在类中添加这个方法而直接为私有属性赋值,会出现”不能访问某个私有属性”的错误
魔术方法 __get
触发时机: 在对象的外部获取私有属性的值时,调用此方法.作用: 通过它可以在对象的外部获取私有成员属性的值
参数: @string name 成员属性名
返回值:有,返回成员属性值
注意事项:如果不在类中添加这个方法而直接为私有属性赋值,会出现”不能访问某个私有属性”的错误
魔术方法 __isset
触发时机: isset()函数在类外部测定对象里面的私有属性时,自动调用
作用: 当在一个未定义的属性上调用isset()函数时调用此方法
参数: @string name 传入对象中的成员属性名作为参数
返回值:有,返回布尔值
魔术方法 __unset
触发时机:使用unset函数删除对象中的成员函数被封装,就需要在类中添加”__unset”方法
作用: 删除对象中的私有成员属性
参数: @string name 传入对象中的成员属性名作为参数
返回值:无
魔术方法__toString()
触发时机: echo 一个对象的时候触发
作用: echo对象的时候返回字符串. 简化操作
参数: 没有
返回值: 必须有,必须是字符串
注意事项: 返回值必须是字符串类型,其他类型不会自动转换
魔术方法__clone()
触发时机:在对象进行clone操作的时候自动触发
作用: clone时修改部分成员属性.
参数:无
返回值:无
注意:clone时使用
clone对象的语法:
变量=clone 对象变量;
魔术方法__call
触发时机:在调用不存在的成员方法时自动触发
作用:1.屏蔽错误,2,自定义方法
参数:2个 1.调用不存在的方法名2.调用时的所有实参组成的数组
返回值:可有可无.
注意事项; 该方法可以用于自定义方法,但是不要全部方法都是用call来定义..
魔术方法__autoload()
触发时机:当实例化对象或者类之间有继承关系,但是当前页面中不存在该类的情况下会自动触发该,魔术方法
作用: 自动加载类
参数: 1个 需要的类名
返回值: 没有
注意事项: 一般仅用于自动加载类.
魔术方法 __sleep
触发时机: 在对象串行化 serialize时自动触发.
作用: 用于设定串行化的成员属性.
参数: 没有
返回值:有,数组类型,每个元素都是一个成员属性名
注意事项:必须返回一个数组类型.
魔术方法__wakeup
触发时机: 在对象进行反串行化的时候自动触发.
作用: 反串行化的时候自动修改成员属性.
参数: 没有
返回值: 不需要返回值
注意事项:注意逻辑问题,一般只对需要反串行化时修改的属性进行设定.