PHP面向对象开发之魔术函数详解
php中魔术函数包括有tostring、call、clone、autoload几个常用的函数,希望此教程对各位朋友会有所帮助。
面向对象开发总结
1.对象的描述和配置。(可以理解为对对象的输出文字描述)
2.对象方法的一场处理。(可以理解为出现异常时候,自定义更人性化的错误信息)
3.克隆对象的应用。(可以理解为在原始对象上,克隆出一样的另一个对象,注意是另一个。)
4.自动载入对象的方法。(可以理解为引用)
1.对象描述和配置
方法名:__tostring()
格式代码如下:
class My { function __tostring() { return "这里写这个类的文字描述"; //要用return,echo会出错。 } } $p = new My(); echo $p;
实例代码如下:
<?php class My { function __toString() { return "这个类的作用是,保卫地球。"; } } $p = new My(); echo $p; ?>
2.对象方法的异常处理
调用一些不存在的对象方法的异常处理,是程序正常运行。
方法名:__call($funname,$arr_value)
格式代码如下:
<?php class My { function __call($n, $v) { echo "错误的方法名:" . $n; echo "错误的参数:" . $v; } } ?>
实例代码如下:
<?php class My { function __toString() { return "这个类的作用是,保卫地球。"; } function __call($n, $v) { echo "错误的方法<b>" . $n . "</b><br />"; echo "错误的值<b>" . print_r($v) . "</b>"; //值是以数组方式传递的,所以要用print_r。 } } $p = new My(); $p->demo("第一", 6); ?>
3.对象的克隆
通过克隆方式可以在内存中生成两个一样的对象或升级原对象。(不是简单的赋值,而是在内存中开两块内存,克隆出的和被克隆的是2个属性方法一样的不同的两个对象)
方法名:__clone()
关键字:clone
格式代码如下:
<?php class My { function __clone() { echo "克隆时自动调用的函数"; } } $a = new My(); $b = clone $a; ?>
实例代码如下:
<?php class My { public $name = "小猪"; function __toString() { return "这个类的作用是,保卫地球。"; } function __call($n, $v) { echo "错误的方法<b>" . $n . "</b><br />"; echo "错误的值<b>" . print_r($v) . "</b>"; //值是以数组方式传递的,所以要用print_r。 } } $p = new My(); $b = clone $p; echo $b->name = "小猪头" . "<br />"; //这是克隆并修改后的对象,如果使用 $b = $p,那修改$b->name="小猪头";后,再输出$p,也会被修改。 echo $p->name; //这是原对象,它已经被$b克隆了,其他都一样,但是他们是独立的。 ?>
4.自动载入对象的方法
快速取得对象名称并自动载入进当前页面
方法名:__autoload()
格式代码如下:
<?php function __autoload($class_n) { include ($class_n . ".php"); } $p = new MyPc(); //自动调用执行如下 $d = new demo(); //include("mypc.php") ?>
实例代码如下:
<?php function __aotoload($class_name) { include ($class_name . ".php"); //写在类外部。 } $p = new class_name(); //这里实例化的类名就被上面的函数变量 $class_name 替代了,非常方便。 ?>
本文地址:http://www.phprm.com/mxdx/fs1560.html
转载随意,但请附上文章地址:-)