在项目外访问和加载symfony Dependency Injection Container?

时间:2016-11-23 19:34:28

标签: kernel symfony

在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');

0 个答案:

没有答案