【问题标题】:How to migrate from old PHP database handler library to PDO without any code breaking?如何在不破坏任何代码的情况下从旧的 PHP 数据库处理程序库迁移到 PDO?
【发布时间】:2015-02-22 20:42:27
【问题描述】:

我为我的项目使用了AdoDb 数据库处理程序库,现在我想迁移到PDO 但我不希望整个项目停止工作我该怎么办?

我使用了该处理程序的大约 10 种方法(也使用了可以工作的简单查询 PDO),因此我找到了两种解决方案:

1- 扩展PDO 类并向其添加AdoDB 方法签名并修复它以与PDO 一起使用。

2- 包装 PDO 类并添加这些方法。

什么是最好的解决方案,我应该考虑这样做吗?

【问题讨论】:

    标签: php design-patterns pdo


    【解决方案1】:

    所以,您的问题是关于扩展或包装。通常最好不要扩展您不拥有的类。例如,PDO 类中的任何更改都可能无法预料地破坏您的扩展类。您无法控制更改。因此,由于您不拥有 PDO 类,我建议将其包装起来。

    确保您使用 PDO 类的所有优点。否则你只会让你的代码更复杂而没有任何改进。

    【讨论】:

    • 是的,换行,创建你自己的类库,然后切换它们。
    【解决方案2】:

    您对此项目有任何功能/浏览器测试吗?如果是这样,请将项目复制到您的开发机器,然后将每个 AdoDB 调用修改为等效的 PDO,并重复进行,直到您的测试通过为止。

    确实,您可以将 PDO 修复为看起来像 AdoDB,但只有在您认为所需的方法干净地映射到 PDO 时才这样做。修复所有用例应该很快,因为您可以在项目中进行全局搜索。

    如果您对此项目没有任何功能测试,请考虑编写一些测试 - 它们将帮助您确信在进行此类大规模重构时没有破坏某些东西。当然,您应该对项目中的每个操作进行测试,因此通常情况下,更多的测试 = 更好地防止回归。

    【讨论】:

    • 感谢您的建议。我的应用程序有很多使用旧库的地方,很难全部修改。所以现在我想包装 pdo 类并稍后重构代码。问题是不仅 pdo 类需要更改,而且它返回的语句(当从 db 中选择时返回另一个类..)需要进行包装 :(
    猜你喜欢
    • 2019-05-02
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多