PHP魔术方法__call()

2018-09-15 19:00 By "Powerless" 3081 0 0

__call()方法的用法

function __call(string $function_name, array $arguments)
{
    // 方法体
}

程序中调用未定义的方法时,__call()方法会自动被调用。

示例如下:

<?php
class Person
{                             
    function say()
    {
           echo "Hello, world!<br>";
    }     
    function __call($funName, $arguments)
    {
          echo "The function you called:" . $funName . "(parameter:" ;  // 输出不存在的方法的名称
          print_r($arguments); // 输出不存在的方法的参数列表
          echo ")does not exist!!<br>\n";                   
    }                                         
}
$Person = new Person();           
$Person->run("teacher"); // 如果对象内不存在的方法被调用,则 __call() 方法会被自动调用
$Person->eat("John", "apple");             
$Person->say();

输出结果如下:

The function you called: run (parameter: Array([0] => teacher)) does not exist!
The function you called: eat (parameter: Array([0] => John[1] => apple)) does not exist!
Hello world!

评 论

View in WeChat

Others Discussion

  • 分布式架构之「 数据分布」
    Posted on 2019-11-14 10:00
  • PHP扩展ImageMagick安装
    Posted on 2022-11-11 11:16
  • PHP7不兼容性
    Posted on 2018-03-07 15:59
  • Redis各种数据类型的使用场景举例分析【三】
    Posted on 2018-11-22 17:00
  • 投票通过,PHP 8 确认引入 Union Types 2.0
    Posted on 2019-11-18 22:22
  • PHP设计模式 - 委托模式
    Posted on 2019-04-25 16:15
  • BASE原则
    Posted on 2020-12-17 16:42
  • 程序员年中考试题-段子版
    Posted on 2021-06-23 15:57