您的位置:首页 > 编程语言 > PHP开发

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

2017-10-12 19:44 375 查看
__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 A
A is A
A is B
B is B
B is B
B 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()就实现了单例模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php