[转]PHP __CLASS__、get_class()与get_called_class()的区别

来源:互联网 发布:累计参与人数js效果 编辑:程序博客网 时间:2024/05/16 00:26

__CLASS__ 获取当前的类名,

get_class()与上面一样,都是获取当前的类名

get_called_class()获取当前主调类的类名

当涉及到继承时,在方法中使用类名。

class A {    function say()     {        echo 'A is ' . __CLASS__ . '<br/>';        echo 'A is ' . get_class() . '<br/>';        echo 'A is ' . get_called_class() . '<br/>';    }}class B extends A {    function say()     {        parent::say();        echo 'B is ' . __CLASS__ . '<br/>';        echo 'B is ' . get_class() . '<br/>';        echo 'B is ' . get_called_class() . '<br/>';    }}$b = new B();$b->say();

输出:

A is AA is AA is BB is BB is BB is B

MVC框架中,涉及到单例时很好用,一般在基类中

public static function getInstance() {    $class_name = get_called_class();    if (isset(self::$instance[$class_name])) {        return self::$instance[$class_name];    }    self::$instance[$class_name] = new $class_name;    return self::$instance[$class_name];}

其他类只要继承这个类,然后通过getInstance()就实现了单例模式

原创粉丝点击