php __call __autoload __clone __toString __sleep
1、__call
__call( $method, $arg_array ) 当调用一个未定义的方法是调用此访求,php5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它.
方法:如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用.
__call实例方法代码如下:
1 2 3 4 5 6 7 8 9 |
|
这个特殊的方法可以被用来实现"过载(overloading)"的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数.
1 2 3 4 5 6 7 |
|
现在我在index.php页面要用到mysql 类,我就这样,代码如下:
1 2 3 4 5 |
|
path/ 是类文件所在路径
$class 就是调用时的类名啦
后面的.php 当然是扩展名啦,一个类文件可能感觉不到有多好用,如果类文件很多的时候,每个类都要include一下,那太麻烦了,只要每个页面之前写一个 __autoload() 即可,通过调用此函数,脚本引擎在 php 出错失败前有了最后一个机会加载所需的类.
3、__construct、__destruct
构造函数与析构函数[__construct __destruct()],他在类class中的作用是初始化与销毁变量下面我们来看看实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
这时我们在用时就不需要考虑数据连接与关闭了,只要$aa = new db();就ok了.
4、__clone
__clone魔术方法,我们知道对象是可以直接赋值的,比如
$p2 = $p1;//这里是一个对象有两个引用,那么我执行:$p1->say();$p2->say();是都可以执行的,而且效果一样.
我们还有一种方法:$p3 = clone $p1;//注意clone是克隆关键字,这里与上面的不同是$p3是一个新的对象,同时我们在类里加入一个方法:
1 2 3 4 |
|
//然后我们执行:$p3->say();
//打印出:name:我是副本 age:20
到这里我们明白,__clone()方法是在克隆对象的时候执行的方法,它的作用是对新克隆出来的副本进行属性初始化等操作.
5、__tostring
__tostring方法在将一个对象转化成字符串时自动调用,如果我有一个类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
现在我去实例化这个类,然后去打印这个实例:
$p1 = new person("liuzy",20);echo $p1; //直接打印会出错
显然这样直接打印对象是会出现错误的,因为对象是引用句柄,不能直接打印,这时,我们可以用到__tostring()方法,我们在person类里加一个__tostring()方法:
1 2 3 4 |
|
然后再刷新页面,发现什么了?现在我们明白,__tostring()是在直接打印对象时执行的方法,我们可以用该方法打印类的一些相关信息,注意:是两个下划线,方法必须有返回值.
6、__sleep、__wakeup
__sleep 串行化的时候用,__wakeup 反串行化的时候调用,在php进行序列化时,serialize() 检查类中是否有 __sleep(),如果有,则该函数将在任何序列化之前运行,该函数必须返回一个需要进行序列化保存的成员属性数组,并且只序列化该函数返回的这些成员属性.
该函数有两个作用:第一,在序列化之前,关闭对象可能具有的任何数据库连接等,第二,指定对象中需要被序列化的成员属性,如果某个属性比较大而不需要储存下来,可以不把它写进__sleep要返回的数组中,这样该属性就不会被序列化,相反地,unserialize() 从字节流中创建了一个对象之后,马上检查是否具有__wakeup 的函数的存在,如果存在,__wakeup 立刻被调用,使用 __wakeup 的目的是重建在序列化中可能丢失的任何数据库连接以及处理其它重新初始化的任务.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
---------- php debug ----------
1 2 3 4 5 6 7 8 9 10 11 12 |
|
本文地址:
转载随意,但请附上文章地址:-)

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)