由于一些设置限制,我想自动加载特定文件夹中的捆绑包而不在AppKernel.php中添加新捆绑包。
例如:
我在/ src /.
中有一个名为autoload的文件夹我希望我在那里创建的任何bundle都能自动加载而无需在AppKernel.php中注册它们。
我的想法是编写一个函数来遍历/ src / autoload中的所有文件夹,并为该bundle构建字符串并将其附加到registerBundles()中的$ bundles。
//loop through src/autoload
//Create the string ... new Namespace/Autoload/BundleName()
//$bundles[] = $listOfBundlesFromAutoload
我知道这不是传统的,如果没有其他办法,那么我将手动添加新的捆绑包,但是有一些约束条件会使每次添加新捆绑包时都难以继续注册新的捆绑包。
有什么想法吗?
答案 0 :(得分:2)
当然你可以,只要你知道它不常规并且事后洗手: - )
在AppKernel.php中,在加载默认包后,您可以输入:
$bundleFiles = glob(__DIR__ . '/../src/*Bundle/*Bundle.php');
foreach ($bundleFiles as $bundleFile) {
$className = $this->getClassFullNameFromFile($bundleFile);
$bundles[] = new $className();
}
从this answer复制getClassFullNameFromFile的位置。