在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 '
__NAMESPACE__ = '.__NAMESPACE__; echo '
__DIR__ = '.__DIR__; $vd = new VarDumper(); dump($kernel->getContainer()); //prints "null"

我想加载一个包含其配置的容器 . 例如,我想测试我的数据库实体,访问存储库等 .

如何在这里加载和访问完全有用的 DI Container (就像它在控制器中可用)?这样做有简单的方法吗?

或者,也许更具体地说,当我想通过例如加载我的 config/config.yml 文件时:

$loader = new YamlFileLoader($container, new FileLocator(__DIR__));
$loader->load(__DIR__.'/MyProject/app/config/config.yml');

我之前需要通过容器加载所有bundle(在AppKernel中注册 - 在$ kernel内部var - registerBundles()方法) . 我怎样才能做到这一点?

UPDATE :所以现在它正在工作,甚至AppKernel的副本不再是必要的(所以我删除它) . 引导( $kernel->boot(); )内核后的问题是自动加载注释 . 我必须使用 Doctrine\Common\Annotations\AnnotationRegistry 手动注册它们:

AnnotationRegistry::registerAutoloadNamespace('Doctrine\ORM\Mapping' => __DIR__.'/MyProject/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping');