【问题标题】:How to get the child name of class in PHP [duplicate]如何在PHP中获取类的子名[重复]
【发布时间】:2013-03-09 19:09:43
【问题描述】:

我想在父类构造函数中获取子类名称。这些类是命名空间的,所以如果我使用 get_class();函数,它将检索整个命名空间,我只需要一个孩子的类名。

如果有关系,父类是一个抽象类。

【问题讨论】:

  • 你到底在做什么?可能有更好的方法...
  • 我正在使用一个支持事件的框架。我有一个抽象类,它将某种数据插入数据库。我想制定一个约定,自动执行“fire()”一些事件,例如:Event::fire('{{child_class_name}}_insert', $something);
  • 我正在使用命名空间。我已经看过这个话题了。

标签: php oop


【解决方案1】:

带有命名空间的全限定类名,确实是“正确”的类。 如果你只想要最后一位,你应该只是子串。

$class = substr(get_class($this), strrpos(get_class($this),'\\')+1);

或者你可以使用反射

$refl = new \ReflectionObject($this);
$class = $refl->getShortName();

【讨论】:

  • 我的课不在“最后一位”上,所以我不能从字符串中减去它。类名在命名空间字符串中没有“确切位置”,因此这不是解决方案。难道没有别的办法吗?
  • “类部分”始终是命名空间字符串的最后一部分,没有例外。如果你想实现不同的目标,你应该举一个确切的例子。
【解决方案2】:

尝试PHP中的get_called_class()函数

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 2021-11-07
    • 2021-03-14
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多