好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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)

格式代码如下:

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

格式代码如下:

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()

格式代码如下:

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 替代了,非常方便。   ?> 

查看更多关于PHP面向对象开发之魔术函数详解 - php面向对象的详细内容...

  阅读:47次