在不使用反射的情况下获取类名减去命名空间

crm*_*cco 1 php oop reflection class php-7

有没有一种简单的方法可以在使用反射的情况下获取没有命名空间的类名?

这是我的课,当我打电话时,get_class()我得到CRMPiccoBundle\Services\RFC\Webhook\SiteCancelled

namespace CRMPiccoBundle\Services\RFC\Webhook;

class SiteCancelled extends Base implements Interface
{
    public function process() {
       // echo get_class()
    }
}
Run Code Online (Sandbox Code Playgroud)

yiv*_*ivi 8

或者简单地爆炸返回class_name并获取最后一个元素:

 $class_parts = explode('\\', get_class());
 echo end($class_parts);
Run Code Online (Sandbox Code Playgroud)

或者简单地从以下输出中删除命名空间get_class

echo str_replace(__NAMESPACE__ . '\\', '', get_class());
Run Code Online (Sandbox Code Playgroud)

可以使用或不使用命名空间。

等等。


Mos*_*ufi 7

使用该class_basename()函数获取不带命名空间的类名

<?php

echo class_basename(__CLASS__);
Run Code Online (Sandbox Code Playgroud)

  • `class_basename` 是 [Laravel 的函数](https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/helpers.php#L69),而不是来自 PHP 本身。 (7认同)
  • class_basename() 函数不存在。 (3认同)
  • 好吧,我正在使用 Laravel,我一直在寻找这个。谢谢@LucaMurante :-) (3认同)