在MyProject symfony项目目录结构之外(比它高一级)我使用一个简单的文件进行测试:
<?php
use Symfony\Component\VarDumper\VarDumper;
require __DIR__.'/MyProject/vendor/autoload.php';
require_once __DIR__.'/MyProject/app/AppKernel.php';
$kernel = new AppKernel('dev', false);
$kernel->loadClassCache();
echo '<br/>__NAMESPACE__ = '.__NAMESPACE__;
echo '<br/>__DIR__ = '.__DIR__;
$vd = new VarDumper();
dump($kernel->getContainer());
//prints "null"
我想加载一个包含其配置的容器。例如,我想测试我的数据库实体,访问存储库等等。
如何在此处加载和访问完全有用的 DI容器(就像它在控制器中可用)?这样做有简单的方法吗?
或者,或许,更具体地说,当我想加载我的 config / config.yml 文件时,例如:
$loader = new YamlFileLoader($container, new FileLocator(__DIR__));
$loader->load(__DIR__.'/MyProject/app/config/config.yml');
我之前需要通过容器加载所有包(在AppKernel中注册 - 上面的内核var - registerBundles()方法)。我怎样才能做到这一点?
更新:所以现在它正在运行,甚至AppKernel的副本也不再需要(所以我删除了它)。
引导($kernel->boot();
)内核后的问题是自动加载注释。我必须使用Doctrine\Common\Annotations\AnnotationRegistry
手动注册它们:
AnnotationRegistry::registerAutoloadNamespace('Doctrine\ORM\Mapping' => __DIR__.'/MyProject/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping');