__call()方法详解

_call(),在对象中调用一个不可访问方法时调用。

该方法有两个参数,第一个参数 $function_name 会自动接收不存在的方法名,第二个 $arguments 则以数组的方式接收不存在方法的多个参数。

1、 __call() 方法的格式:

function __call(string $function_name, array $arguments)

{

    // 方法体

}

2、 __call() 方法的作用:

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

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

请参考如下代码:

<?php

class Person

{                            

    function say()

    

                               

           echo "Hello, world!<br>";

    }     

         

    /**

     * 声明此方法用来处理调用对象中不存在的方法

     */

    function __call($funName, $arguments)

    {

          echo "你所调用的函数:" . $funName . "(参数:" // 输出调用不存在的方法名

          print_r($arguments); // 输出调用不存在的方法时的参数列表

          echo ")不存在!<br>n"; // 结束换行                     

    }                                         

}

$Person = new Person();           

$Person->run("teacher"); // 调用对象中不存在的方法,则自动调用了对象中的__call()方法

$Person->eat("小明", "苹果");            

$Person->say();

运行结果:

你所调用的函数:run(参数:Array ( [0] => teacher ) )不存在!

你所调用的函数:eat(参数:Array ( [0] => 小明 [1] => 苹果 ) )不存在!

Hello, world!

未经允许不得转载:PHP100中文网 - 中国第一档PHP资源分享门户 » __call()方法详解

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏