首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在遗留应用程序中使用Symfony 2容器

如何在遗留应用程序中使用Symfony 2容器
EN

Stack Overflow用户
提问于 2012-04-16 08:39:13
回答 2查看 4.1K关注 0票数 9

希望将遗留应用程序与Symfony 2应用程序集成--将越来越多的旧应用程序部分替换为Symfony组件。我将采取的方法是在遗留应用程序中使用Symfony 2容器来获取已经为Symfony 2应用程序配置的服务。我想使用的第一个服务是会话和安全上下文。

问题:

  • 这可行吗?
  • 如何获得配置的服务容器?

遗留应用程序中的更多信息:典型的PHP :单个PHP文件,作为“控制器”(检查$_GET和$_POST是否有不同的执行路径)。每个页面都包括设置自动加载、数据库连接等的init.php。会话管理有自己的类(我想替换),通过调用静态方法(!)检索数据。数据库对象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-16 17:45:36

使用Symfony的DIC作为独立组件是可能的,但是您必须“手动”执行许多事情(因为您从一开始就不打算使用完整的Symfony框架)。您可能不会在所有遗留的东西中使用DIC。

如果您想走这条路,我会考虑先选择另一个组件(比如HttpFoundation和HttpKernel)。

正如@Cerad所建议的那样,您可以将遗留代码包装在Symfony中。看一看IngewikkeldWrapperBundle包。你不能按原样使用它,但它可能会给你一些想法。

还有第三条路。

您可以决定在Symfony应用程序中实现每个新功能。比,你可以使遗留和Symfony的应用共存。在服务器级别(即Nginx),您可以将遗留URL代理到遗留应用程序,将所有迁移的URL代理到Symfony2应用程序。在我的例子中,这个场景是最好的选择,并且被证明是可行的。然而,我们承诺放弃遗留的应用程序开发(因此,每个新特性或更改都必须在Symfony2应用程序中开发)。

编辑:下面是如何在遗留应用程序中引导Symfony内核并分派一个事件(防火墙需要这样做):

代码语言:javascript
运行
复制
$kernel = new \AppKernel('dev', true);
$kernel->boot();

$request = Request::createFromGlobals();
$request->attributes->set('is_legacy', true);
$request->server->set('SCRIPT_FILENAME', 'app.php');

$container = $kernel->getContainer();
$container->enterScope('request');
$container->get('request_stack')->push($request);
$container->set('request', $request);

$event = new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
$eventDispatcher = $container->get('event_dispatcher');
$eventDispatcher->dispatch('kernel.request', $event);
票数 11
EN

Stack Overflow用户

发布于 2012-04-17 12:45:35

我相信您可以像这样从遗留应用程序中访问容器实例

代码语言:javascript
运行
复制
$kernel = new AppKernel('prod', true);
$kernel->loadClassCache();
$kernel->boot();
$request = Request::createFromGlobals();
$container = $kernel->getContainer();
$sc = $container->get('security.context');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10170989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档