构建一个大的PHP项目


Structuring a Large PHP Project

PHP在很大程度上是一种灵活的语言,我可以在任何地方和任何地方这样做。但是,您认为构建大型项目的最佳实践是什么?

我为一个客户定制了一个CMS,但因为这是我第一次涉足大型项目,所以有点混乱。到处都有文件,文件夹结构很差。

一位朋友建议,应该放在网站根目录中的唯一文件是"页面"文件,即实际包含HTML的文件,并且您应该为每个不同的元素都有单独的文件夹,然后可以很容易地将这些文件与include放进不同的页面。每个人都会推荐这条路线还是完全由个人偏好决定?


如果开始一个新的项目,考虑使用一个框架,或者看看他们是怎么做的。

框架通常指定或建议目录结构。

即使你最终没有使用:他们构建项目的方式通常来自于大量的经验。

我个人最喜欢Zend框架的结构方式及其自动加载程序。但有几种选择和哲学。

框架问题:

  • 选择什么PHP框架

  • 最适合经验丰富的PHP开发人员的PHP框架?

  • 更多框架问题….

一般相关:

  • 在PHP项目中,如何组织和访问助手对象?

  • 大型项目如何使用PHP?


我想说,你如何将应用程序按文件夹布局并不重要。拥有文件是必要的,它对应用程序有一定的影响。解决这一影响。这不是你如何布局你的文件夹,而是为什么。在下面找到一些想法。

为了安全起见,您应该只将那些脚本放到Webroot中,而Webroot实际上应该是可以直接为世界服务的。

此外,如果在运行时创建了文件,请确保在将应用程序部署/更新到服务器时不会覆盖这些文件。无论您是在部署例程中解决这个问题,还是通过文件夹布局解决这个问题,都取决于您自己。

为了提高性能,考虑到包含特定请求所需/不需要的文件/代码会不必要地减慢应用程序的速度。还有很多搜索路径。确保PHP能够快速找到所需的文件。

对于可维护性,使用常识。没有规定每个类必须有一个文件。也没有规定您必须遵循PEAR文件布局。PEAR是一种广泛使用的约定,也是一种合理的约定,但是如果您的文件对于这个特定的应用程序有意义的话,请将它扔到一个文件夹中。

在我看来,一个应用程序不是文件,而是里面的代码。与文件相比,将代码组织得井井有条更为重要。与混乱的体系结构相比,混乱的文件布局并不是一个问题。


我建议根文件夹中只有一个文件,即index.php,并根据收到的请求使这个文件包含所需的所有其他文件。如果您使用OOP,那么将类放入模仿名称间距的文件夹结构(无论是在php<5.3中模拟还是在5.3+中实际模拟)通常都很方便。这样可以轻松地自动加载类。


就我个人而言,我使用您在上一段中描述的方式,发现它有用、干净且易于执行。一定要移动公共libs/文件中的所有公共内容,绝不要复制/粘贴。

另一种(常见的)结构化方法是使用一些框架,这些框架通常强制某些特定的项目结构。