什么是魔术函数? 对于__开头的函数就命名为魔术函数, 此类函数都在特定的条件下触发的.比如: __set() __get()等 在设置或取不存在的属性时候触发. 有那些魔术函数呢? 总的来说, 有下面几个魔术函数 __construct() __destruct() __get() __set() __isset() __unset() __call() __callStatic() __sleep() __wakeup() __toString() __set_state() __clone() __autoload() __construct()当实例化一个对象的时候,这个对象的这个方法首先被调用。 __destruct()当删除一个对象或对象操作终止的时候,调用该方法。 __get当试图读取一个并不存在的属性的时候被调用。 __set当试图向一个并不存在的属性写入值的时候被调用。 __isset当试图检测一个并不存在的属性时候被调用。 __unset当试图取消一个并不存在的属性时候被调用。 __sleep当进行序列化对象时候调用 __wakeup当进行反序列对象时候调用 需要注意一点: 1. __sleep()必须返回一个数组或者对象(一般返回的是$this),返回的值将会被用来做为序列化的 值。 如果不返回这个值,则序列化失败。这也意味着反序列化将不会触发__wakeup事件。 2. 序列化会保存默认赋值的属性.如果要通过实例化赋值的内容,则需要属性在__sleep()返回数组的 指定. 如$id与$id2的区别. __toString当直接打印一个对象的时候,这个方法将会被调用 __call($func, $param) 当尝试调用一个不存在的方法的时候被调用. 这个方法必须有两个参数,第一个为调用的方法名,第二个是一个被调用方法的参数数组。 需要注意的是,当你在一个子类调用父类的private的方法,或者在实例里调用类的非protect方法的 时候,并不会调用__call() __callStatic()当尝试调用一个不存在的静态方法的时候被调用 这个方法必须有两个参数,第一个为调用的方法名,第二个是一个被调用方法的参数数组。 在PHP5.3中出现 __set_state()当用var_export导出实例的时候被调用.此方法有一个参数,为包含所导出的实例的所 有成员属性的一个数组 __clone()当克隆实例时候被调用. 注意: 1.在php5里,对象间的赋值总是以地址引用来传递的. 2.如果要以实际值来传递,则需要用到clone关键词 3.clone的只是实例。如果实例中的某个成员属性也是个实例,那么这个成员属性还是会以引用方法被 传递到新的实例。 // 对象间的赋值总是以地址引用来传递的. $t $t的age属性是一样的. // $i 和$i1虽然不是指向同一个实例,但是它们的成员属性$sub却是指向同一个实例。这时候,我们必须借 助__clone这个方法来对$sub进行复制。 // $i2和$3指向不同实例.成员属性$sub也指向不同实例. __autoload()函数.当创建一个实例化的时候,如果对应的类不存在,则会被调用
推荐整理分享php 魔术函数使用说明(php魔术方法的讲解与使用),希望有所帮助,仅作参考,欢迎阅读内容。
![php 魔术函数使用说明(php魔术方法的讲解与使用)](https://www.jiuchutong.com/image/20231206/1701841055.jpg)
文章相关热门搜索词:php魔术方法的讲解与使用,php魔法函数,php魔术变量有哪些,php魔术方法,php魔术方法的讲解与使用,php魔术方法,php魔术方法autoload,php魔术方法,内容如对您有帮助,希望把文章链接给更多的朋友!
PHP 学习路线与时间表 本文讨论的重点在于PHP学习及开发的持久性与外延性.当许多人把自己三个月学会PHP当作一种资本到处炫耀时.当这些人炫耀过后又转投其它语言时.我必
用Zend Encode编写开发PHP程序 ZendEncode的工作原理使用PHP的人都知道,它是一个脚本编程工具,用它写的程序,必须以源码的形式放置在Web服务器上,所以我们无法保护自己的源代码
收藏的PHP常用函数 推荐收藏保存 内容:?functionGetIP(){//获取IPif($_SERVER["HTTP_X_FORWARDED_FOR"])$ip=$_SERVER["HTTP_X_FORWARDED_FOR"];elseif($_SERVER["HTTP_CLIENT_IP"])$ip=$_SERVER["HTTP_CLIENT_IP"];elseif($_SERVER["REMOTE_AD