Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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应用程序都是纯脚本_Php_Open Source_Shared Hosting_Scripting - Fatal编程技术网

为什么许多流行的开源PHP应用程序都是纯脚本

为什么许多流行的开源PHP应用程序都是纯脚本,php,open-source,shared-hosting,scripting,Php,Open Source,Shared Hosting,Scripting,这是部分观察,部分问题。 首先是观察: 虽然每个人都在谈论模块化编程、OOP、正确完成过程、面向方面、设计模式等,但一些流行的开源PHP应用程序是纯脚本文件,其结构由包括和要求控制 这在我看来很愚蠢,直到我最近遇到了共享web主机的问题——它们不支持共享主机上的MySQL存储过程。我查看了许多相互竞争的共享托管软件包-同样的故事。 然后,我使用SQL查询和DB处理类中的一些静态函数重写了代码。 当时我意识到,上述PHP项目实际上考虑了整个web托管包,因此决定尽可能保持代码的哑巴,以达到更广泛的

这是部分观察,部分问题。
首先是观察:
虽然每个人都在谈论模块化编程、OOP、正确完成过程、面向方面、设计模式等,但一些流行的开源PHP应用程序是纯脚本文件,其结构由
包括
要求
控制

这在我看来很愚蠢,直到我最近遇到了共享web主机的问题——它们不支持共享主机上的MySQL存储过程。我查看了许多相互竞争的共享托管软件包-同样的故事。
然后,我使用SQL查询和DB处理类中的一些静态函数重写了代码。
当时我意识到,上述PHP项目实际上考虑了整个web托管包,因此决定尽可能保持代码的哑巴,以达到更广泛的用户基础。
另一件事是脚本对没有正式软件工程师背景的新手的影响:对于新手来说,脚本更容易破解

这两个是我看到的解释这种现象的好理由。
毫无疑问,维护这些项目的人非常擅长软件开发,所以这不是无能。
有时他们也有多余的现金

现在的问题是:你还能想到什么其他合理的理由


编辑:我个人认为这不仅仅与OOP有关,正如其他人所指出的,良好的代码结构并不依赖于OOP/过程风格。我自己也看过一些基于函数的PHP项目并编写了代码

最让我困扰的是文件夹/文件系统布局很好,文件/文件夹命名很好,文档很多,遵循标准,但是,当你打开文件阅读代码时,有100个if-then-else条件,版本检查,输出缓冲的零星使用,cookie操作代码,一些常量,包括,在许多文件中没有明确的结构

至少每次我试着读代码的时候我似乎都迷路了。但是,如果我从Java或C#代码库,甚至其他一些边缘化的PHP应用程序中阅读代码,那么函数内部的代码会有适当的分离,模板用于显示等等。看起来很有条理。看起来很容易理解。
向后兼容性可能是维护人员的问题,但他们愿意以更结构化的方式制作下一个版本。但这也不会发生

显然,我遗漏了一些东西,因为毕竟这些维护人员总是努力工作。

在使用PHP构建应用程序时,提供程序兼容性在许多领域都是一个问题,这不是某些项目中不使用OOP的原因

一些面向对象的编程特性,如接口、
public/private/protected
关键字等都可以使用。一些应用程序仍然支持PHP4,主要原因是仍然有一些提供商不会升级(出于对客户端PHP4应用程序将大量崩溃的合理担忧)。因此,仍然有很多“原始”PHP4OOP代码。但没有一个活生生的PHP版本至少不支持基本的OOP

include
require
用于将代码段导入当前脚本。您也可以在面向对象的应用程序中找到它们


有几种软件产品几乎完全不使用OOP,只要总体代码质量正常就可以了。尽管许多人(包括我自己)认为OOP是编写更好、更可重用软件的重要方法,但OOP并不要求编写好的软件。

在使用PHP构建应用程序时,在许多领域,提供程序兼容性是一个问题,这并不是某些项目中不使用OOP的原因

一些面向对象的编程特性,如接口、
public/private/protected
关键字等都可以使用。一些应用程序仍然支持PHP4,主要原因是仍然有一些提供商不会升级(出于对客户端PHP4应用程序将大量崩溃的合理担忧)。因此,仍然有很多“原始”PHP4OOP代码。但没有一个活生生的PHP版本至少不支持基本的OOP

include
require
用于将代码段导入当前脚本。您也可以在面向对象的应用程序中找到它们


有几种软件产品几乎完全不使用OOP,只要总体代码质量正常就可以了。尽管许多人(包括我自己)认为OOP是编写更好、更可重用软件的重要方法,但OOP并不要求编写好的软件。

除非您将MVC框架与PHP结合使用,否则这种面向对象的方法(如ASP.NET)会占用您太多的时间。实际上,您需要首先设计自己的框架

我不能说在php中使用真正的面向对象方法是不可能的。您可以将对象带到任何您想要的位置,并序列化以在会话等中对其进行排序

当谈到PHP中的MVC框架时,您可以看到一种真正的面向对象方法

在这里查看

Zend框架不是唯一的一个


但是“面向对象”这个词对PHP来说是新的。只有PHP5被认为具有真正的OOP。因此,您还需要等待1-2年才能拥有真正面向对象方法的好脚本。

除非您在PHP中使用MVC框架,否则这种面向对象方法(如ASP.NET)将占用您太多的时间。实际上,您需要首先设计自己的框架

我不能说在php中使用真正的面向对象方法是不可能的。您可以将对象带到任何您想要的位置,并序列化以在会话等中对其进行排序

当谈到PHP中的MVC框架时,您可以看到一个真实的对象