再看本文章之前,请各位仔细阅读一下关于__call()方法的作用和使用实例,这样有利于大家继续了解__callStatic()方法。

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

__callStatic()方法实例:

<?php
class Person
{
    function say()
    {

        echo \"Hello, world!<br>\";
    }

    /**
     * 声明此方法用来处理调用对象中不存在的方法  http://www.manongjc.com
     */
    public static function __callStatic($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!
收藏 打印