我正在使用 Composer 生成自动加载器:
"autoload": {
"psr-4": {
"SomeNamespace\\": "src/SomeDir"
}
}
我需要创建实现特定接口的所有类的实例。这相当容易但是,当不使用自动加载器时get_declared_classes()
与自动加载器配合得不好。只有在使用自动加载器实例化一个类后,它才会列出该类。
你可以使用肮脏的黑客和require_once
之前的所有课程get_declared_classes()
函数调用。
- 首先,通过以下方式将所有类转储到类映射中
composer dumpautoload --optimize
- 现在您可以获取 Composer 加载程序并需要所有文件
$res = get_declared_classes();
$autoloaderClassName = '';
foreach ( $res as $className) {
if (strpos($className, 'ComposerAutoloaderInit') === 0) {
$autoloaderClassName = $className; // ComposerAutoloaderInit323a579f2019d15e328dd7fec58d8284 for me
break;
}
}
$classLoader = $autoloaderClassName::getLoader();
foreach ($classLoader->getClassMap() as $path) {
require_once $path;
}
- 现在您可以轻松使用
get_declared_classes()
再次,返回作曲家已知的所有类
附:不要在生产中使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)