__CLASS__ get_class() get_called_class()区别

__CLASS__获取当前的类名,this

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

get_called_class()后期静态绑定类的名称io

class testA
{
    function printS()
    {
        echo 'testA' . __CLASS__ . '<br/>';
        echo 'testA' . get_class() . '<br/>';
        echo 'testA' . get_class($this) . '<br/>';
        echo 'testA' . get_called_class() . '<br/>';
        echo '=========' . '<br/>';
    }
}
class testB extends testA
{
    function printS()
    {
        parent::printS();
        echo 'testB' . __CLASS__ . '<br/>';
        echo 'testB' . get_class() . '<br/>';
        echo 'testB' . get_class($this) . '<br/>';
        echo 'testB' . get_called_class() . '<br/>';
    }
}function


$tb = new testB;
$tb->printS();class

结果:test

testAtestA
testAtestA
testAtestB
testAtestB
=========
testBtestB
testBtestB
testBtestB
testBtestBcall

单例实例get_called_class():static

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];
    }sse

 

本篇是为网上实例....单例

相关文章
相关标签/搜索