Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将实时站点迁移到MVC结构的策略?_Php_Html_Model View Controller_Migration_Rewrite - Fatal编程技术网

Php 将实时站点迁移到MVC结构的策略?

Php 将实时站点迁移到MVC结构的策略?,php,html,model-view-controller,migration,rewrite,Php,Html,Model View Controller,Migration,Rewrite,关于MVC和开始使用MVC有很多很好的内容,但是我很难找到如何在一个预先存在的实时网站上最好地实现MVC结构 我的网站是一个令人讨厌的混搭的回声和连接的HTML,会让任何专业程序员呕吐,但它的工作 然而,我想花一些时间来解决不断增加的技术债务,这意味着要转向一个更理智的MVC结构 如果可能的话,我想避免一个让我们撕扯100%重写并启动方法,而是一次编写一个部分。但基本控制器的集中式结构似乎不适合这种方法?这是可能的。如果在请求的路径上找不到实际文件,您可以将mod rewrites写为仅重定向到

关于MVC和开始使用MVC有很多很好的内容,但是我很难找到如何在一个预先存在的实时网站上最好地实现MVC结构

我的网站是一个令人讨厌的混搭的回声和连接的HTML,会让任何专业程序员呕吐,但它的工作

然而,我想花一些时间来解决不断增加的技术债务,这意味着要转向一个更理智的MVC结构


如果可能的话,我想避免一个让我们撕扯100%重写并启动方法,而是一次编写一个部分。但基本控制器的集中式结构似乎不适合这种方法?

这是可能的。如果在请求的路径上找不到实际文件,您可以将mod rewrites写为仅重定向到boot.php或其他任何文件。这将允许您一次完成一个部分。然而,确保所有链接都处于有序状态将是一场噩梦


may wan需要进行重写,并在运行时从旧应用程序中复制和粘贴所需的代码。

如果我了解该代码库的总体质量水平,则无法一步转到MVC。这是不可能的。另一个坏消息是,框架不会有帮助。他们无法神奇地将糟糕的代码库转换成类似MVCish架构的东西

相反,您应该关注增量重构。您的目标应该是主要遵循原则和规则的代码。当您重构代码时,体系结构将自行出现。MVC有许多变体和风格

有一件事你可能想看看,那就是使用的方式。检查代码,看看您需要更改什么以满足您的需求(这更多的是一个方向,而不是一个完整的解决方案)。记住,在类似MVC的结构中,视图不是一个模板,但它使用多个模板

你可能从中受益的另一件事是了解更多。实现它们将是朝着创建模型层方向迈出的一大步

哦。。还有一些你可以看的一般讲座(都是30分钟以上):


哦,他对重构大型php项目有一些见解。可能对您有用。

我同意这里的其他建议,框架不会是一个神奇的解决方案

然而,从长远来看,这会有所帮助。 我现在已经将许多mishmash站点转换为kohana框架,并有以下经验

起初我对科哈纳了解不够,所以我在重新编写mysite的时候就知道了这一点。我停止了重写,从头开始编写了一个全新的项目来学习kohana,然后又回到了重写项目,现在我对框架有了更好的理解

如果您不理解框架,那么尝试使用它转换旧项目将是一个陡峭的学习曲线

  • 重写的第一步是将嵌入到页面中的所有业务/数据库逻辑拉到每个页面的顶部(在html输出之前)。因此,我没有改变网站的流程/结构,只是将业务逻辑与显示逻辑分离

    在那之后,我有了一个网站,它具有易于阅读的业务逻辑,只是在旧的结构中,同时我也熟悉了旧的代码库

  • 我所做的下一步是修复任何数据库结构问题,使所有内容都处于第三种正常形式(如果可能的话)

    我发现将旧代码修改为新的数据库结构更容易,然后在新框架中处理旧的数据库结构。(kohana在很大程度上是一个基于约定的框架,而不是配置,因此遵循这些约定很好,以便于长期维护)

    无论框架如何,拥有良好的数据库结构都会使生活更加轻松

  • 下一步是选择网站的一部分进行替换。在科哈纳建立路线,让科哈纳为项目的这一部分服务。kohana(和其他框架无疑)有一个回退,如果通过url请求的文件已经存在于站点上,那么kohana将不会处理该请求

    由于您已将业务逻辑与php文件中的显示逻辑分离,因此只需将代码拆分为控制器和视图。对这两个部分进行更改以适应框架。在控制器/视图按预期工作后,可以将业务逻辑拆分为模型/控制器

  • 在网站的这一部分工作,直到完成。然后测试/启动/错误修复等

    然后重新开始站点的下一部分

    最终你会到达那里

    虽然重写花了很多时间,但对我来说这是值得的,因为现在网站更容易维护。(显然,增益量将取决于原始代码基的质量)


    祝您好运

    安装虚拟机。设置与live server类似的环境。复制你的网站。编写单元测试,然后重构代码库。这样,您的实时站点不会受到影响,完成后,您只需将新站点推到生产站点。要想了解更多的想法,根据你的经验,这将需要一次并行的完全重写,然后翻转开关,一次完成所有任务?@Andreweath,不,这将需要增量重构:分析>重构>测试>发布>重复