草庐IT

php - 从 Zend Framework 1 迁移到 Zend Framework 2

coder 2024-04-26 原文

我们有一个相当大的应用程序,它有大约 8 个模块(大模块)使用 Zend 框架 1 编写,并且已经由几个开发人员开发了 3 年多。此外,它每天都有很高的流量。我们还使用 Amozon s3、Sphinx、Memcache 和一些其他第三方服务。

将它迁移到 Zend framework 2 是个好主意吗?因为当我们简要浏览文档时,Zend framework 2 似乎已完全重写。因此,我们认为我们将无法轻松迁移应用程序,而不是根据 ZF 2 重写应用程序。

将不胜感激宝贵的想法。

最佳答案

你说得对,ZF2 是完全不同的动物。事实上,差异如此之大,以至于没有放之四海而皆准的迁移计划/策略。

不过,我最近做了一个类似的迁移。这是一个相当复杂的业务线应用程序,最初用了大约 18 个月的时间编写,具有多种不同的功能。该决定的主要驱动因素是模块和事件系统的改进。

在我们的案例中,它变成了产品的主要版本,最终包括一系列 UI 更改以及所有管道。

假设您喜欢 ZF1,好消息是 ZF2 是更好的框架(作为一个框架)。 ModuleManager、EventManager、Di 和 ServiceManager 组件(以及一般的 MVC 相关的东西)真的很棒,一旦你理解了它们。坏消息是它们完全背离了 ZF1。所以您至少要注册彻底检查您的调度和路由,您将告别 Zend_Registry(ServiceManager/ServiceLocator 是一个巨大的改进)。

另一个好消息是,您几乎可以肯定地保留所有旧的 ZF1 型组件,只要您需要它们。因此,如果您依赖 Zend_Cache、Zend_Log、Zend_Mail 等,稍微调整一下自动加载器配置应该可以做到这一点。

我的建议是,如果您真的要冒险,请考虑先迁移到 ZF2-as-a-framework,然后再担心 ZF2-as-a-component-library。

如果您坚持使用胖模型/瘦 Controller 范例,那么以一种相当直接的方式替换 Controller 、前端 Controller 、Zend_Application 东西可能是可行的。一旦将其投入生产,您就可以在时间允许的情况下消除对 ZF1 组件的依赖。在我的例子中,没有太多这样的东西,因为事情被很好地分解和包装(所以,例如,从 Zend_Cache 移动到 Zend\Cache 是微不足道的)

最后,您应该预先知道 View 层的东西(主要是与助手相关的东西)也是不同的。如果你到处都有一堆复杂的 View 相关的东西(部分、自定义 View 助手等),你需要预见到要么重写它们,要么找到一种方法来使用 ZF2 中的旧 Zend_View 东西,这样你就可以迁移零碎的。我并没有真正处理这个问题,因为我们的界面相当简单,我们以此为契机彻底改造了 UI。

只有我的 0.02 美元,但我希望它能有所帮助。

关于php - 从 Zend Framework 1 迁移到 Zend Framework 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15450178/

有关php - 从 Zend Framework 1 迁移到 Zend Framework 2的更多相关文章

  1. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  2. ruby-on-rails - Rails 还是 Sinatra? PHP程序员入门学习哪个好? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我使用PHP的时间太长了,对它感到厌倦了。我也想学习一门新语言。我一直在使用Ruby并且喜欢它。我必须在Rails和Sinatra之间做出选择,那么您会推荐哪一个?Sinatra真的不能用来构建复杂的应用程序,它只能用于简单的应用程序吗?

  3. ruby-on-rails - PHP 魔术方法 __call、__get 和 __set 的 Ruby 等价物 - 2

    我很确定Ruby有这些(等同于__call、__get和__set),否则find_by将如何在Rails中工作?也许有人可以举一个简单的例子来说明如何定义与find_by相同的方法?谢谢 最佳答案 简而言之你可以映射__调用带有参数的method_missing调用__设置为方法名称以'='结尾的method_missing调用__获取不带任何参数的method_missing调用__调用PHPclassMethodTest{publicfunction__call($name,$arguments){echo"Callingob

  4. ruby - Lisp - 是否适合网络编程/应用程序(交互式)? ruby 的方式是? php的方式是? - 2

    Lisp是否适合Web编程/应用程序(交互式),就像ruby​​和php一样?需要考虑的事情是:易于使用可部署性难度(尤其是对于编程初学者而言)(编辑)在阅读PaulGraham'sessay之后,我特别提到了CommonLisp.将是我的第一门编程语言。在这方面。这样做合适吗?我听说Clojure的宏功能不如CommonLisp的强大,这就是我尝试学习Clojure的原因。它教授编程并且非常强大。 最佳答案 Lisp是一个语系,而不是单一的语言。为了稍微回答您的问题,是的,存在用于各种Lisp方言的Web框架,例如用于Common

  5. 软件工程毕业设计课题(81)微信小程序毕业设计PHP校园跑腿小程序系统设计与实现 - 2

        项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信校园跑腿小程序系统,前台用户使用小程序发布跑腿任何和接跑腿任务,后台管理使用基于PHP+MySql的B/S架构;通过后台管理跑腿的用户、查看跑腿信息和对应订单。意义:手机网络时代,大学生通过手机网购日常用品、外卖外卖、代取快递等已不再是稀奇的事情。此外,不少高校还流行着校园有偿工作,校园跑腿就成了大学生创业服务项目。        因为你在校园里,所以不会有进入的限制。并不是所有的外卖平台都可以随意进入校园,比如小黄和小蓝的双打外卖平台。许多大学禁止送餐进入学校,更不用说送餐进入宿舍了。这一措施使得校园服务市场的竞争相对不

  6. K8s部署PHP项目 - 2

    前言    前端时间PHP项目部署升级需要,需要把Laravel开发的项目部署K8s上,下面以laravel项目为例,讲解采用yaml文件方式部署项目。一、部署步骤1.创建Dockerfile文件Dockerfile是一个用来构建镜像的文本文件,在容器运行时,需要把项目文件和项目运行所必须的组件安装其中。#基础镜像FROMphp:7.4-fpm#时区ARGTZ=Asia/Shanghai#更换容器时区RUNcp"/usr/share/zoneinfo/$TZ"/etc/localtime&&echo"$TZ">/etc/timezone#替换成阿里apt-get源RUNsed-i"s@http

  7. ruby-on-rails - PHP 开发人员学习 Ruby 和 Ruby on Rails - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我对学习Rails很感兴趣已经有一段时间了,我觉得现在正是浸入其中并实际动手实践的好时机。在过去的一周里,我阅读了所有我能找到的关于Ruby和RubyonRails的免费电子书。我刚刚读完RubyEssentials。我也一直在玩htt

  8. ruby-on-rails - Ruby 相当于 PHP 的 ucfirst() 函数 - 2

    在Ruby中(使用Rails,如果相关)将字符串首字母大写的最佳方法是什么?请注意String#capitalize不是我想要的,因为除了将字符串的首字母大写外,此函数还使所有其他字符变为小写(这是我不想要的——我想让它们保持原样):>>"aA".capitalize=>"Aa" 最佳答案 在Rails中你有String#titleize方法:"测试字符串标题化方法".titleize#=>"测试字符串标题化方法" 关于ruby-on-rails-Ruby相当于PHP的ucfirst()

  9. c# - 如何从 .NET 风格的 TDD 迁移到 Ruby? - 2

    我一直在努力将我用于测试驱动.NET代码的标准方法调整为Ruby。例如,我正在编写一个类,它将:graball*.markdownfilesfromadirectoryforeachfile:extractcodesamplesfromfilesavecodetofile.csinoutputdirectory通常对于.NET,我最终会得到类似这样的东西:classExamplesToCode{publicExamplesToCode(IFileFinderfinder,IExampleToCodeConverterconverter){...}publicvoidConvert(st

  10. ruby-on-rails - 从 Rails 2 迁移到 Rails 3 - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Rails3deprecatedmethodsandAPIs有哪些资源(免费或付费)可以帮助您完成将RubyonRails2应用程序迁移到Rails3的过程?我在RoR网站的某个地方看到了一些博客文章(其中一些似乎已经过时)和一本出售的电子书,但是您可以推荐什么作为对从版本2到版本3的变化以及需要什么的准确和完整的解释移植到Rails3环境时要更新?

随机推荐