php__callStatic()方法是什么,怎么用的?

PHP / 1103人浏览 / 0人评论

__call()是一个魔术方法,可以处理类内未定义的方法,让浏览器友好输出,对用户友好输出。__call()有两个参数,使用的时候需要传入两个参数,第一个参数是方法名称,第二个参数是包含传递给该方法的参数的所有值。

PHP5中的特殊方法

在php中内置了一些特书的方法,这些特殊方法被称之为魔术方法,其也有特殊的命名规则,以“__”双下划线开头的方法和函数名,所以我们自定义的函数不应该用双下划下开头,目的是为了区分魔术方法。

PHP魔术方法有哪些呢?

__construct()__autoload()__destruct()__call()__callStatic()__get()
__set()__isset()__unset()__sleep()__wakeup()__toString()__invoke()__set_state()__clone()__debugInfo() 等方法在 PHP 中被称为魔术方法(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。

php__callStatic()概述

PHP的魔术方法都是成对出现,所以和__call()成对出现的是__callStatic()方法,在静态上下文中调用一个不可用的方法时会执行这个方法。(PHP 5.3.0 版本以上)

__callStatic()是一个魔术方法,可以处理类内未定义的静态方法,让浏览器友好输出,对用户友好输出。__callStatic()有两个参数,使用的时候需要传入两个参数,第一个参数是方法名称,第二个参数是包含传递给该方法的参数的所有值。

public static mixed __callStatic ( string $methord , array $arguments )

php__callStatic()演示示例

在这个示例中我们随便构建一个Person类,然后当我们先实例化一个对象然后通过对象调用一个它并不包含的getUser()方法时,就会自动调用类中__call()方法。当我们调用一个这个类中并不存在的静态方法getUser()时,则会自动调用类中__callStatic()方法。

<?php
class Person
{
    public function __call($methord, $arguments)
    {
        // 注意:$methord的值区分大小写
        echo "Calling object method '$methord' " . implode(', ', $arguments) . "\n";
    }
    // PHP 5.3.0之后的版本
    public static function __callStatic($methord, $arguments)
    {
        echo "Calling static method '$methord' " . implode(', ', $arguments) . "\n";
    }
}
//实例化类
$obj = new Person;
$obj -> getUser('in object context');
echo "<br/>";
// PHP 5.3.0 版本以后
//使用类名调用静态方法
Person::getUser('in static context');

转载注明:

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我