Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在遗留应用程序中使用Symfony 2容器

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

Stack Overflow用户
提问于 2012-04-16 00: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 09:45:36

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

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

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

还有第三条路。

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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 04:45:35

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$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

复制
相关文章
如何在Ubuntu 14.04上将Symfony应用程序部署到生产环境中
Symfony是一个用PHP编写的开源Web框架,适用于构建任何规模的项目。它提供了一个基于可重用组件的精心设计的结构,您可以在其上构建自己的PHP应用程序。
你在哪里
2018/09/26
12.8K0
Symfony 服务容器入门
本文是依赖注入(Depeendency Injection)系列教程的第 3 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
3.4K0
Symfony 服务容器:使用建造者创建服务
本文是依赖注入(Depeendency Injection)系列教程的第 5 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
2.6K0
Symfony 服务容器性能优化
本文是依赖注入(Depeendency Injection)系列教程的最后一篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
3.1K0
Symfony 服务容器性能优化
如何在Ubuntu 18.04上使用LEMP将Symfony 4应用程序部署到生产中
Symfony是一个开源PHP框架,具有优雅的结构和声誉,无论其大小如何,都是一个适合启动任何项目的框架。作为一组可重用的组件,其灵活性,体系结构和高性能使其成为构建高度复杂的企业应用程序的首选。
小皇帝James
2018/11/15
4.8K0
Symfony 服务容器:使用 XML 或 YAML 文件描述服务
本文是依赖注入(Depeendency Injection)系列教程的第 5 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
1.8K0
使用容器进行应用程序路由
本文收录在DZone的容器编制与部署指南中。点击此处阅读更多富有洞察力的文章、行业统计数据等内容!
Techeek
2018/01/15
9170
php使用Symfony EventDispatcher 组件
大家好,这篇文章将通过我在实际开发工作中的例子,来介绍Symfony的EventDispatcher组件的使用及实现原理。
OwenZhang
2021/12/08
2.1K0
使用Docker容器化FastAPI应用程序
在构建和部署应用程序时,Docker 容器化已成为一种常见的做法。通过将应用程序和其依赖项打包在一个独立的容器中,可以轻松地在不同环境之间移动和部署应用程序,同时确保其依赖项的一致性和可重复性。
堕落飞鸟
2023/05/08
1K0
如何在Docker容器中运行Docker [3种方法]
/var/run/docker.sock是默认的Unix套接字。套接字用于在同一主机上的进程之间进行通信。Docker守护程序默认情况下侦听docker.sock。如果您在运行Docker守护程序的主机上,则可以使用/ var/run/docker.sock管理容器。
DevOps云学堂
2020/09/14
27.3K0
如何在Docker容器中运行Docker [3种方法]
揭穿SaaS应用程序可取代所有遗留系统这个神话
如今,软件即服务(SaaS)应用程序越来越多地应用于大企业。公司高管想要员工使用这种应用程序的两个首要原因是: * 节省成本:公司可节省IT团队扩建构建新应用程序需要的IT基础设施的高昂前期成本。扩建成本包括设立机房,以及聘请另外的编程人员、系统工程师和系统分析人员。SaaS提供商提供了运行SaaS应用程序所需的IT基础设施和虚拟机;公司从内部或外部的SaaS开发人员获得应用程序。 * 简化用户的数据相关任务:SaaS应用程序可帮助员工简化将数据交给公司高管的任务,高管需要数据帮助自己做出及时的决策,并且需
静一
2018/03/21
5630
如何在Kubernetes中实现容器原地升级
在Docker的世界,容器镜像作为不可变基础设施,解决了环境依赖的难题,而Kubernetes将这提升到了Pod的高度,希望每次应用的更新都通过ReCreate Pod的方式完成,这个理念是非常好的,这样每次ReCreate都是全新的、干净的应用环境。对于微服务的部署,这种方式并没有带来多大的负担,而对于传统应用的部署,一个Pod中可能包含了主业务容器,还有不可剥离的依赖业务容器,以及SideCar组件容器等,这时的Pod就显得很臃肿了,如果因为要更新其中一个SideCar Container而继续按照ReCreate Pod的方式进行整个Pod的重建,那负担还是很大的,体现在:
Walton
2019/04/15
6.6K0
如何在Kubernetes中实现容器原地升级
如何在容器中避免CPU瓶颈限制
在 Uber,所有有状态的工作负载都运行在一个跨大型主机的通用容器化平台上。有状态工作负载包括 MySQL®、Apache Cassandra®、ElasticSearch®、Apache Kafka®、Apache HDFS™、Redis™、Docstore、Schemaless 等,并且在许多情况下,这些工作负载位于同一物理主机上。
从大数据到人工智能
2022/03/30
1.3K0
如何在容器中避免CPU瓶颈限制
nginx配置Symfony
server { listen 80; server_name blog.phpfs.com; root /data/web; rewrite ^/a
苦咖啡
2018/04/28
1.7K0
Symfony是什么
众所周知前面有说到PHP的七大框架,接下来就来说说Symfony框架,希望说的对大家有所帮助。
叫我可儿呀
2019/11/26
2.1K0
Symfony是什么
如何在VueJS应用程序中设置Toast通知
通知是开发者提升应用程序互动性和改善用户体验的强大工具。通过利用通知,开发者可以在用户与应用程序互动的同时,有效地向用户传达重要事件。
前端达人
2023/09/11
2790
如何在VueJS应用程序中设置Toast通知
如何在docker的容器中使用gdb
话不多说,先上答案:在运行容器的时候,使用参数--cap-add sys_ptrace,比如:
Homqyy
2023/03/06
1.7K0
使用Jexus 容器化您的 Blazor 应用程序
在本文中,我们将介绍如何将 Blazor 应用程序放入Jexus 容器以进行开发和部署。我们将使用 .NET Core CLI,因此无论平台如何,使用的命令都将是相同的。
张善友
2020/06/19
2.2K0
使用Jexus 容器化您的 Blazor 应用程序
如何在CentOS 7上使用Django应用程序使用MariaDB
Django是一个用于快速创建Python应用程序的灵活框架。默认情况下,Django应用程序配置为将数据存储到轻量级SQLite数据库文件中。虽然这在某些负载下运行良好,但更传统的DBMS可以提高生产性能。
你在哪里
2018/10/22
1.7K0
点击加载更多

相似问题

为什么Symfony2建议避免使用“遗留”php会话?

12

如何在遗留的symfony2项目中使用验证器组件?

11

如何在棘轮websocket应用程序中使用遗留会话($_SESSION)和symfony会话

10

将遗留用户迁移到symfony2

20

Symfony2,容器服务

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文