这是部分观察,部分问题。
首先观察:
虽然每个人都在谈论模块化编程、OOP、正确的过程、面向方面、设计模式等,但一些流行的开源 PHP 应用程序是纯脚本文件,其结构由includes
和控制requires
。
这对我来说看起来很愚蠢,直到我最近遇到了共享 Web 主机的问题——它们不支持共享主机上的 MySQL 存储过程。我检查了许多竞争的共享主机包——同样的故事。
然后我使用 SQL 查询和 DB-handling 类中的一些静态函数重写了代码。
那时我意识到,上述 PHP 项目实际上考虑了整个网络托管包,因此决定让代码尽可能地笨拙,以便覆盖更广泛的用户群。
另一件事是脚本对没有正式 Software Engg 背景的新手的影响:对于新手来说,脚本更容易破解。
这两个是我看到解释这一现象的充分理由。
毫无疑问,维护这些项目的人非常擅长软件开发,所以这不是无能。
有时他们也有闲钱。
现在的问题是:你还能想到什么其他合理的理由?
编辑:我个人觉得这不仅仅是 OOP,正如其他人所指出的,良好的代码结构不依赖于 OOP/过程风格。我自己看过并编写了一些基于函数的 PHP 项目。
最困扰我的是文件夹/文件系统布局好,文件/文件夹命名好,文档丰富,遵循标准,但是,当你打开文件阅读代码时,有一百个if-then -else 条件、版本检查、偶尔使用输出缓冲、cookie 操作代码、一些常量、包含以及许多文件中没有清晰的结构。
至少我每次尝试阅读代码时似乎都迷失了方向。但是,如果我从 Java 或 C# 代码库,甚至是其他一些旁观的 PHP 应用程序中读取代码 - 函数内部的代码有适当的分离,模板用于显示等等。看起来井井有条。看起来很容易理解。
向后兼容性可能是维护者的问题,但他们愿意以更结构化的方式制作下一个版本。但这也不会发生!
显然,我遗漏了一些东西,因为毕竟那些维护者总是努力工作。