网站地图    收藏   

主页 > php专栏 > php面向对象 >

PHP面向对象开发之魔术函数详解 - php面向对象

来源:自学PHP网    时间:2014-11-30 12:29 作者: 阅读:

[导读] php中魔术函数包括有tostring、call、clone、autoload几个常用的函数,希望此教程对各位朋友会有所帮助。面向对象开发总结1 对象的描述和配...

PHP面向对象开发之魔术函数详解

php中魔术函数包括有tostring、call、clone、autoload几个常用的函数,希望此教程对各位朋友会有所帮助。

面向对象开发总结

1.对象的描述和配置。(可以理解为对对象的输出文字描述)

2.对象方法的一场处理。(可以理解为出现异常时候,自定义更人性化的错误信息)

3.克隆对象的应用。(可以理解为在原始对象上,克隆出一样的另一个对象,注意是另一个。)

4.自动载入对象的方法。(可以理解为引用)

1.对象描述和配置

方法名:__tostring()

格式代码如下:

  1. class My { 
  2. function __tostring() { 
  3. return "这里写这个类的文字描述"//要用return,echo会出错。 
  4. $p = new My(); 
  5. echo $p

实例代码如下:

  1. <?php 
  2. class My { 
  3.  function __toString() { 
  4.   return "这个类的作用是,保卫地球。"
  5.  } 
  6. $p = new My(); 
  7. echo $p
  8. ?> 

2.对象方法的异常处理

调用一些不存在的对象方法的异常处理,是程序正常运行。

方法名:__call($funname,$arr_value)

格式代码如下:

  1. class My { 
  2. function __call($n,$v) { 
  3. echo "错误的方法名:".$n
  4. echo "错误的参数:".$v

实例代码如下:

  1. <?php 
  2. class My { 
  3.  function __toString() { 
  4.   return "这个类的作用是,保卫地球。"
  5.  } 
  6.  function __call ($n,$v) { 
  7.   echo "错误的方法<b>".$n."</b><br />"
  8.     echo "错误的值<b>".print_r($v)."</b>"//值是以数组方式传递的,所以要用print_r。 
  9.  } 
  10. $p = new My(); 
  11. $p->demo("第一",6); 
  12. ?> 

3.对象的克隆

通过克隆方式可以在内存中生成两个一样的对象或升级原对象。(不是简单的赋值,而是在内存中开两块内存,克隆出的和被克隆的是2个属性方法一样的不同的两个对象)

方法名:__clone()

关键字:clone

格式代码如下:

  1. class My { 
  2. function __clone() { 
  3. echo "克隆时自动调用的函数"
  4. $a = new My(); 
  5. $b = clone $a

实例代码如下:

  1. <?php 
  2. class My { 
  3.  public $name = "小猪"
  4.  function __toString() { 
  5.   return "这个类的作用是,保卫地球。"
  6.  } 
  7.  function __call ($n,$v) { 
  8.   echo "错误的方法<b>".$n."</b><br />"
  9.     echo "错误的值<b>".print_r($v)."</b>"//值是以数组方式传递的,所以要用print_r。 
  10.  } 
  11. $p = new My(); 
  12. $b = clone $p
  13. echo $b->name="小猪头"."<br />"//这是克隆并修改后的对象,如果使用 $b = $p,那修改$b->name="小猪头";后,再输出$p,也会被修改。 
  14. echo $p->name; //这是原对象,它已经被$b克隆了,其他都一样,但是他们是独立的。 
  15. ?> 

4.自动载入对象的方法

快速取得对象名称并自动载入进当前页面

方法名:__autoload()

格式代码如下:

  1. function __autoload($class_n) { 
  2. include($class_n.".php"); 
  3. $p = new MyPc(); //自动调用执行如下 
  4. $d = new demo(); //include("mypc.php") 

实例代码如下:

  1. <?php 
  2. function __aotoload ($class_name) { 
  3.  include($class_name.".php"); //写在类外部。 
  4. $p = new class_name(); //这里实例化的类名就被上面的函数变量 $class_name 替代了,非常方便。 
  5. ?> 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论