gpt4 book ai didi

php - 如何告诉命名空间下的类列表

转载 作者:搜寻专家 更新时间:2023-10-31 20:36:38 27 4
gpt4 key购买 nike

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

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

例如,我想在整个框架启动后,在 Laravel Controller 中获取这个类列表。

我正在寻找我已经在 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/>';
}
}
}

输出

class \foo_a exists in namespace foo\bar
class \bar_a exists in namespace foo\bar

关于php - 如何告诉命名空间下的类列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33525498/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com