php魔术方法__callStatic()作用及实例讲解

时间:2016-11-02
php __callStatic()方法与__call()功能一样,都是为了避免当调用的方法不存在时产生错误而意外的导致程序中止,不同点在于 __callStatic() 是为静态方法而准备的,本文章向大家介绍php __callStatic()方法的作用及实例,需要的朋友可以参考一下。

再看本文章之前,请各位仔细阅读一下关于__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!