在开发中,要获取当前的类名,我们通常会使用预定义常量 __CLASS__
。
但如果出现在多个类存在继承关系,我们通常就不那么方便获取相关的类名了。
本身为基类,获取子类名
《PHP的继承方法如何获取子类名?》
get_class()
用于实例调用,加入参数($this)
可解决子类继承调用的问题,而get_called_class()
则是用于静态方法调用。
<?php
/**
* 基类
*/
class A
{
public function __construct()
{
// 实例化调用情况
echo get_class($this);
}
public static function name()
{
// 静态方法调用时
echo get_called_class();
}
}
/**
* 子类,产生继承关系
*/
class B extends A
{
}
$objB = new B(); // 输出 B
B::name(); // 输出 B
静态方法
本身作为基类的静态方法被调用时,可以使用 get_called_class()
函数
(PHP 5 >= 5.3.0, PHP 7)
get_called_class — 后期静态绑定(”Late Static Binding”)类的名称
get_called_class ( void ) : string
获取静态方法调用的类名。
https://www.php.net/manual/zh/function.get-called-class.php
非静态方法
在基类方法被实例化之后调用时,可以使用 get_class()
函数,并把 $this
作为参数传入。
(PHP 4, PHP 5, PHP 7)
get_class — 返回对象的类名
get_class ([ object
$object
=NULL
] ) : string返回对象实例
https://www.php.net/manual/zh/function.get-class.phpobject
所属类的名字。
本身为子类,获取基类名
使用 get_parent_class() 方法可以获取基类的类名。
(PHP 4, PHP 5, PHP 7)
get_parent_class — 返回对象或类的父类名
get_parent_class ([ mixed
https://www.php.net/manual/zh/function.get-parent-class.php$obj
] ) : string
class C {
}
class A extends C{
public function test() {
echo get_parent_class();// 获取父类名
}
}
(new A)->test() // 输出 C
参考
《PHP的继承方法如何获取子类名?》
https://blog.csdn.net/zls986992484/article/details/53154097
《php 获取父类或者子类名》
https://blog.csdn.net/persistinlife/article/details/76975229