如何告知命名空间下的类列表


How to tell the list of classes under a namespace

我如何在整个命名空间层次结构中进行筛选,以查看我的包是否已成功自动加载(以及对这些类的额外处理)

我在SO上寻找过类似的问题,但似乎没有人回答这个特定的案例。

例如,我想在整个框架启动后,在Laravel控制器中获得这个类列表。

我正在寻找已经在composer.json中自动加载或从包中添加的自定义名称空间。

CompanyNS'SpecificApplicationNS'Shazbat

我该如何浏览所有内容以查看Shazbat下加载了哪些类?

有什么办法可以用vendor/composer/autoload_psr4.php做点什么吗?

这些类本来可以从其他外部包加载进来。

期待中的感谢。

因此,要获得在唯一命名空间下声明的所有类,在本例中仅使用命名空间名称"foo'bar",可以执行以下操作。

# lets assume this is the namespace, we don't know how many classes it has
# inside it, but we want to find them. 
namespace foo'bar{
   class foo_a{}
   class bar_a{}
}
# this is a namespace, we don't want to find these classes inside it. 
namespace tar'baz{
 class tar_a{}
 class baz_a{}  
}
namespace main{
    # this is the only code you need. wrap it in a function if you want
    $namespace = 'foo'bar';
    foreach('get_declared_classes() as $class){
        if(strpos($class, $namespace) === 0){
            $c = substr($class, strlen($namespace));
            echo 'class ' . $c . ' exists in namespace '. $namespace . '<br/>'; 
        }
    }
}

输出

类''foo_a存在于命名空间foo''bar中
class ''bar_a存在于命名空间foo''bar 中