【问题标题】:Structuring a Large PHP Project [closed]构建大型 PHP 项目 [关闭]
【发布时间】:2010-09-02 09:34:25
【问题描述】:

PHP 是一种非常灵活的语言,我可以随时随地做到这一点。但是,您认为构建大型项目的最佳实践是什么?

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

一位朋友建议,应该位于网站根目录中的唯一文件是“页面”文件 - 即其中实际包含 HTML 的文件,并且您应该为每个不同的元素设置单独的文件夹,然后可以很容易地使用包含将其拉入不同的页面。每个人都会推荐这条路线还是完全由个人喜好决定?

【问题讨论】:

    标签: php


    【解决方案1】:

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

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

    即使您最终没有使用其中一种:他们构建项目的方式通常来自大量经验。

    我个人最喜欢 Zend Framework 的结构化方式,以及它的 Autoloader。但是有几种选择和理念。

    框架问题:

    一般相关:

    【讨论】:

      【解决方案2】:

      我建议在根文件夹中只保留一个文件,即 index.php,并根据收到的请求使该文件包含所需的所有其他内容。 如果您使用 OOP,通常将您的类放入模仿您的命名空间的文件夹结构中(无论是在 PHP

      【讨论】:

      • 我相信这是在你的代码中制造大量臃肿的开始,不幸的是,这种方式很常见。
      • @BarsMonster 由于该问题要求大型 PHP 项目而不是一些小型站点,因此使用 FrontController 是一个合理的建议。文件夹结构也是一个不错的选择。这是 PEAR 约定 afaik。用赞成票补偿反对票。
      • @BarsMonster:可以说,如果您将一个巨大的 switch() 语句放入 index.php,这可能是最糟糕的方法。但是有一些方法可以以更精简的方式做到这一点(我会向您推荐您在回答中提到的框架)
      【解决方案3】:

      我想说太多你如何布局你的应用程序文件夹并不重要。拥有文件是必要的,它对应用程序有一些影响。解决这种影响。这不是您布局文件夹的方式,而是原因所在。在下面找到一些个想法。

      为了安全起见,您应该只将那些实际上应该可以直接提供给世界的脚本放入 webroot 中。

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

      为了提高性能,请考虑到包含特定请求所需/不需要的文件/代码会不必要地减慢您的应用程序的速度。有许多 include_paths 搜索也是如此。确保 PHP 可以快速找到它需要的文件。

      为了可维护性,请使用常识。没有规定每个班级必须有一个文件。也没有规定您必须遵循 PEAR 文件布局。 PEAR 是一种普遍且合理的约定,但如果对这个特定的应用程序有意义,请将您的文件放入一个文件夹中。

      IMO,应用程序不是文件,而是其中的代码。让你的代码井井有条比你的文件更重要。文件布局混乱比架构混乱要小得多。

      【讨论】:

        【解决方案4】:

        我个人使用您在上一段中描述的方式,并发现它有用、干净且执行速度快。确保将所有常见的东西移到常用的库/文件中,千万不要复制/粘贴。

        另一种(常见的)结构化方式是当您使用某些框架时,这些框架通常会强制执行某些特定的项目结构。

        【讨论】:

          猜你喜欢
          • 2011-05-07
          • 2012-06-17
          • 2023-02-05
          • 2013-09-10
          • 2015-03-25
          • 2011-07-28
          • 2013-12-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多