魔术方法
Posted 胡智杰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了魔术方法相关的知识,希望对你有一定的参考价值。
重载:
php中提供的重载,是指动态的创建类属性和方法。我们是通过魔术方法来实现的。
所有的重载方法都必须被声明为public
1.魔术方法的特点:
以两个_ _开头,目前有十五个魔术方法。构造函数和析构函数是特殊的方法,也是魔术方法,自己以_ _开头,所创建的类函数并不是魔术方法。
__construct():构造函数
__destruct():析构函数
1. __get() :读取不可访问属性的值时,__get()魔术方法被调用
__get()方法里面只接收一个参数,接收一个$name的值,参数$name主要是指 的是操作的变量名称
__get():代码实例:
效果:
__get()方法的特点:
①__get魔术方法,当在类的外部调用不能直接访问的属性时,该函数方法被自动调用
②下面的格式是该魔术方法的标准形式,不能改变
③魔术方法必须是公共的(public),且不能定义为静态的(static)除__callStatic以外
④get方法必须有返回值,所以最后结束的肯定是return语句
④$name被访问的属性的名称必须是一个字符串
- __set():当给不可访问的属性赋值时,__set()方法会被自动调用
__set($name,$value)方法里面接收两个参数,$name指的是操作变量的名称,$value指定了$name的值
魔术方法__set(),当设置类中的不能直接访问的属性时,自动调用该函数
__set不需要返回值
下面的格式是该魔术方法的标准形式,不能改变
代码实例:
效果:
Property_exists():检查对象或者类里面是否具有该属性,该函数接收两个参数(这是一个bool函数)
- __unset():将变量置空
__isset(): 检查是否存在某一个变量
- __call()
在对象中调用一个不能直接访问的非静态
__callStatic()
在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用。
- __toString():一个类被当做字符串时应怎样回应,将数组转化成字符串输出
魔术方法,当以字符串格式输出类的对象时,默认被自动调用
例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR 级别的致命错误。
该函数方法结束必须有一个return语句,且返回的值必须是字符串
__toString()必须返回一个字符串的内容
- __clone():对象复制
$copy_of_
以上是关于魔术方法的主要内容,如果未能解决你的问题,请参考以下文章