gpt4 book ai didi

php - mysqli:混合 OO 和过程代码

转载 作者:行者123 更新时间:2023-12-05 04:15:41 24 4
gpt4 key购买 nike

php manual mysqli page讨论混合面向对象和过程风格,说“出于代码清晰和编码风格的原因,不推荐混合这两种风格。”

我维护和更新一个大型项目(数千行代码),该项目已有 10 年左右的历史,并且至少会继续进行下去。 (如果您愿意,可以将其视为一种图像 CMS。)所有现有的 mysqli 代码都是过程式的,其中大部分与它最初使用的旧 mysql 扩展相比几乎没有变化。 (并且在大多数情况下仍然可以完美运行。)项目代码模块会根据需要滚动更新、添加、删除和/或替换,因此我将在这个项目上做很多年的零星工作。

为了清晰、简洁和可维护性,我想将其切换为 OO 样式。与从 mysql 到 mysqli 的更改不同,这不是只需一点点思考和大量全局搜索/替换就可以轻松完成的事情。一次性改变整个项目不是一个有吸引力的选择。永远简单地使用过程式 mysqli 可能是最省时的,但我不介意投入工作以使其变得更好,只要我不必一次完成所有工作即可。

仅更改项目的一部分,而将其他部分保留在程序样式中,直到它们无论如何都要重写的时候是否可行?

这里有什么陷阱?当您结合 OO 和过程 mysqli 时,哪些东西可以自由混合,哪些东西不能自由混合?

编辑:为了清楚起见,我不是在询问广泛的风格问题,纯粹是为了混合 OO 风格和过程风格调用 mysqli 扩展的细节。该手册除了一句平淡无奇的声明“可以随时在样式之间切换”之外,没有提供任何有用的细节。

最佳答案

混合 OO 和程序风格没有错。正如引文所说,“出于代码清晰度和编码风格原因,不推荐这样做”。

但是,如果您在从 mysql_* 迁移到 mysqli_* 时所做的只是全局搜索和替换只是为了更改函数的名称,那么您真的错过了新 API 的全部要点。

想法是,在迁移时,您应该实现准备好的语句并清理 mysql_* 函数经常导致的困惑的意大利面条代码。坚持过程式风格对您没有任何好处,甚至会使代码更加复杂。以 OO 风格使用时,准备好的语句和异常更加清晰。

如果您不使用参数绑定(bind)和 mysqli 异常,您不妨坚持使用 mysql_* 函数。

关于php - mysqli:混合 OO 和过程代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31117824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com