get_class()用于获取对象类名,实例中传$this可得类名;静态方法应使用get_called_class()以支持后期静态绑定,而__CLASS__仅返回定义时的类名,不支持动态绑定。
get_class 是 PHP 中用于获取对象所属类名称的内置函数。它在面向对象编程中非常实用,尤其在调试、日志记录或需要根据对象类型执行不同逻辑时。
class User {
public function getName() {
return get_class($this); // 返回当前对象的类名
}
}
$user = new User();
echo $user->getName(); // 输出: User
这里传入 $this,表示当前对象实例,get_class() 会返回其类的名称。
示例对比:
class Animal {
public static function whoAmI1() {
echo get_called_class();
}
public static function whoAmI2() {
echo __CLASS__;
}
}
class Dog extends Animal {}
Animal::whoAmI1(); // 输出: Animal
Dog::whoAmI1(); // 输出: Dog(动态绑定)
Animal::whoAmI2(); // 输出: Animal
Dog::whoAmI2(); // 输出: Animal(始终是定义时的类)
如果希望在继承中获得真实的调用类,应使用 get_called_class()。
function logClassName($obj) {
if (is_object($obj)) {
echo get_class($obj);
} else {
echo 'Not an object';
}
}
也可结合 gettype() 做更全面的类型检查。
基本上就这些。根据使用环境选择合适的方式,注意区分实例与静态、继承中的行为差异。不复杂但容易忽略细节。