CLASS get class() 和 get class() 之间的区别
__CLASS__
magic constant 返回与没有参数调用的 get_class()
函数相同的结果,它们都返回定义它的类的名称(即编写函数调用/常量名称的位置)。
相反,get_class($this)
和 get_called_class()
函数调用,都将返回实例化的实际类的名称:
<?php
class Definition_Class {
public function say(){
echo '__CLASS__ value: ' . __CLASS__ . "\n";
echo 'get_called_class() value: ' . get_called_class() . "\n";
echo 'get_class($this) value: ' . get_class($this) . "\n";
echo 'get_class() value: ' . get_class() . "\n";
}
}
class Actual_Class extends Definition_Class {}
$c = new Actual_Class();
$c->say();
// Output:
// __CLASS__ value: Definition_Class
// get_called_class() value: Actual_Class
// get_class($this) value: Actual_Class
// get_class() value: Definition_Class