PHP 获取父/子类的类名

在开发中,要获取当前的类名,我们通常会使用预定义常量 __CLASS__

但如果出现在多个类存在继承关系,我们通常就不那么方便获取相关的类名了。

本身为基类,获取子类名

get_class() 用于实例调用,加入参数 ($this) 可解决子类继承调用的问题,而 get_called_class() 则是用于静态方法调用。

《PHP的继承方法如何获取子类名?》
<?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

返回对象实例 object 所属类的名字。

https://www.php.net/manual/zh/function.get-class.php

本身为子类,获取基类名

使用 get_parent_class() 方法可以获取基类的类名。

(PHP 4, PHP 5, PHP 7)

get_parent_class — 返回对象或类的父类名

get_parent_class ([ mixed$obj ] ) : string

https://www.php.net/manual/zh/function.get-parent-class.php
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

0 thoughts on “PHP 获取父/子类的类名

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据