如果您使用继承,那么这一点之间的一个重要区别是,它将为您提供包含该代码的类的名称(可以是父类),而将为您提供运行时的具体类的名称。__CLASS__
get_class($this)
__CLASS__
get_class($this)
$this
例:
class Animal {
function printCompileTimeType() {
echo __CLASS__;
}
function printOverridableCompileTimeType() {
echo __CLASS__;
}
function printType() {
echo get_class($this);
}
}
class Dog extends Animal {
function printOverridableCompileTimeType() {
echo __CLASS__;
}
}
$animal = new Animal();
$dog = new Dog();
$animal->printCompileTimeType(); // Prints 'Animal'.
$animal->printOverridableCompileTimeType(); // Prints 'Animal'.
$animal->printType(); // Prints 'Animal'.
$dog->printCompileTimeType(); // Prints 'Animal'.
$dog->printOverridableCompileTimeType(); // Prints 'Dog'.
$dog->printType(); // Prints 'Dog'.
我会说它通常更有用,因为无论您从哪里使用它,它都可以预测地工作,而无需编写重复的覆盖代码,例如.get_class($this)
printOverridableCompileTimeType