加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP之十六个魔术方法详解

发布时间:2016-10-29 12:16:49 所属栏目:PHP教程 来源:segmentfault
导读:副标题#e# 前言 PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对象中调用一个不可访问方法时调用 __callStat

1、 __call() 方法的格式:

  1. function __call(string $function_name, array $arguments) 
  2.  
  3.  
  4.   // 方法体 
  5.  
  6. }  

2、 __call() 方法的作用:

为了避免当调用的方法不存在时产生错误,而意外的导致程序中止,可以使用 __call() 方法来避免。

该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去。

请参考如下代码:

  1. <?php 
  2. class Person 
  3. {                              
  4.     function say() 
  5.     {   
  6.                                
  7.            echo "Hello, world!<br>";  
  8.     }       
  9.          
  10.     /** 
  11.      * 声明此方法用来处理调用对象中不存在的方法 
  12.      */ 
  13.     function __call($funName, $arguments) 
  14.     {  
  15.           echo "你所调用的函数:" . $funName . "(参数:" ;  // 输出调用不存在的方法名 
  16.           print_r($arguments); // 输出调用不存在的方法时的参数列表 
  17.           echo ")不存在!<br>n"; // 结束换行                       
  18.     }                                           
  19. $Person = new Person();             
  20. $Person->run("teacher"); // 调用对象中不存在的方法,则自动调用了对象中的__call()方法 
  21. $Person->eat("小明", "苹果");              
  22. $Person->say();         

运行结果:

  1. 你所调用的函数:run(参数:Array ( [0] => teacher ) )不存在! 
  2.  
  3. 你所调用的函数:eat(参数:Array ( [0] => 小明 [1] => 苹果 ) )不存在! 
  4.  
  5. Hello, world!  

四、 __callStatic(),用静态方式中调用一个不可访问方法时调用

此方法与上面所说的 __call() 功能除了 __callStatic() 是未静态方法准备的之外,其它都是一样的。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读