如何修复旧的编码风格的PHP脚本

时间:2010-02-01 22:49:31

标签: php oop coding-style

对于如何开始修复老式的PHP脚本有什么建议吗?

几天前,我收到了开发一个旧的PHP项目的邀请,而且老式的我的意思是结构没有使用OOP编码方法,而且它没有明确的框架。

我对从何处开始感到困惑,并想知道开发旧脚本的方法有哪些。

注意:他们不想在开始新项目上花很多钱。

那么你建议用什么方法更新旧的PHP脚本?

6 个答案:

答案 0 :(得分:3)

Joel Spolsky writes:

  “[Netscape制造]是任何软件公司都可以犯下的最严重的战略错误:他们决定从头开始重写代码。”

因此,无论您采取何种行动,优先考虑的是使用现有代码。重构将是您可以使用的最佳方法之一。

如果代码库没有更新,你不能做什么,你绝对必须做什么?升级该行动需要多少,特别需要什么?考虑这两个问题。

答案 1 :(得分:2)

这取决于你所说的“老”。在为PHP 4编写的旧版本?或者像非OOP一样老? (或两者兼而有之?)

旧的,如PHP4:
只要你筛选它并抑制警告或实际修复已弃用的函数调用,一切都应该没问题。这只是无聊的工作。简单又便宜。

旧的非OOP:
从理论上讲,可以在没有OOP或明确的MVC(或其他)框架的情况下开发出非常稳定且可扩展的应用程序。事实上,如果应用程序规模较小,则没有理由添加OOP或框架的意大利面条和肉丸复杂性。用一些框架重写OOP中的所有内容既困难又昂贵。而且很可能是矫枉过正。

答案 2 :(得分:1)

你能给我们提供更多细节,也许是一个例子。

即使是程序代码也包含OOP元素。您可以识别与同一实体相关的变量和过程。你可以去改写它,但是它们很难找到它的价值,特别是如果它们节俭,就像你建议的那样。

答案 3 :(得分:1)

当我这样做时,这是一个多步骤的过程。通常,现有产品可以继续运行。从头开始重写很少是一种选择,即使你最终会这样做。

  • 开始抛弃手动包含语句并尽可能实现自动加载器(需要多次通过)
  • 创建一个帮助脚本来模拟魔术引号&注册全局变量。这样你可以在PHP中关闭它,同时保持现有代码运行
  • 逐渐删除多余的strip_slashes或add_slashes调用(如果适用)。帮助程序脚本允许您按文件执行此操作。
  • 确保您的变量具有适当的范围
  • 分开您的演示代码。考虑Smarty或备用模板系统
  • 将数据库调用移至PDO并使用参数替换
  • 查看代码并考虑删除前端控制器

然后我看一下项目并确定我将如何改变逻辑本身。通常,如果根本没有函数,我的第一步是将常见行为包装到静态方法中。在没有太多努力的情况下获得尽可能多的重用,所以我还不关心组织。

减少冗余后,我进入组织。正是在这个阶段,我开始计划我的类模型并将函数重构为干净的方法。这也是自动化测试的时间(phpunit)。一旦我有理由相信,我会添加一些控制器并整合模板,然后我就完成了......除了一两次传球。

对我来说,一切都是为了确定我在哪里,在哪里,以及制定一个可以通过几个小步骤执行的计划。每个人都有自己的目标,所以除了你自己的目标之外,没有任何神奇的计划可以追随。

答案 4 :(得分:0)

也许你的代码现在看起来像这样 alt text

你希望它看起来像这样

alt text

好吧,如果它只是一个脚本,而不是整个项目,我会将其转换为OOP编码标准。

答案 5 :(得分:0)

阅读他们的代码。和他们谈谈。

查看现有代码所要求的更改。和他们谈谈。

决定你改变什么做什么想做什么。和他们谈谈。

那样做。和他们谈谈。

当他们要求通过重写比通过修改更容易完成的功能时,请执行此操作。

使用可以帮助重构的IDE。