首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHP中获取子类的名称

在PHP中获取子类的名称
EN

Stack Overflow用户
提问于 2009-02-11 21:22:08
回答 3查看 6.9K关注 0票数 1

假设我正在构建一个基类,这个基类将由which类扩展。因此,基类称为Base,子类可以是Child1Child2等。

在基类的构造函数中,如何获取Child1/Child2的值?

这一切都是使用PHP实现的

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-11 21:27:45

基类真的不应该依赖于关于子类的信息

回答你的问题:

代码语言:javascript
运行
复制
class base {
    public function __construct() {
        print "Class:" . get_class($this) . "\n";
    }
}

class child extends base{
    public function __construct() {
        parent::__construct();
    }
}
$c = new child();

仅供将来参考--这可以在使用get_called_class()的静态上下文中获得,但这只在PHPP5.3中可用

票数 10
EN

Stack Overflow用户

发布于 2009-02-11 21:26:15

只需调用get_class($this) -但是请注意,基类方法并不需要根据使用它的派生类来改变其行为。这就是派生类的全部意义:)

票数 10
EN

Stack Overflow用户

发布于 2009-02-11 21:23:50

编辑:不知道get_class,忽略这个;)

您可以尝试使用__CLASS__,但它可能无法正常工作。

一种解决方法是将类名指定为基类的属性。

回显编辑:这不起作用(我使用了以下代码)(){ __CLASS;}}

代码语言:javascript
运行
复制
class b extends a {}

$b = new b;

我建议将$b的名称作为参数传递给A,例如:

代码语言:javascript
运行
复制
<?php
class a {
    protected $name;
    public function __construct() {
        echo $this->name;
    }
}

class b extends a {
    protected $name = __CLASS__;
}

$b = new b;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/538863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档