2010-09-02 53 views
0

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

我为客户建立了一个定制CMS,但因为这是我第一次冒险进入一个大型项目,所以它有点混乱。到处都有文件,文件夹结构非常糟糕。

一位朋友建议,应该坐在网站根目录下的唯一文件是“页面”文件 - 即实际上包含HTML的文件,并且您应该为每个不同的元素分别存放文件夹,然后可以很容易地将其与包含在不同的页面中。每个人都会推荐这条路线,还是完全由个人喜好来管理?

回答

4

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

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

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

我个人比较喜欢Zend Framework的结构化方式和Autoloader。但是那里有几个选择和哲学。

框架问题:

一般涉及:

2

我建议在根文件夹中只有一个文件,名为index.php,并根据收到的请求使该文件包含所需的所有内容。 如果你做OOP,通常很容易把你的类放到模仿你的命名空间的文件夹结构中(无论是在PHP < 5.3中进行模拟还是在5.3+中实际进行模拟)。这允许轻松自动加载类。

+1

我相信这是一个开始让你的代码有很多膨胀,不幸的是,这种方式是相当普遍的。 – BarsMonster 2010-09-02 09:42:59

+2

@BarsMonster由于该问题需要大型PHP项目,而不是一些小型站点,因此使用FrontController是一个合理的建议。文件夹结构也是一个很好的电话。这是梨大会afaik。用upvote补偿downvote。 – Gordon 2010-09-02 09:45:26

+0

@BarsMonster:可以说,如果你把一个巨大的switch()语句放到index.php中,它可能是最糟糕的方法。但是有办法以更精简的方式来做到这一点(我会把你在你的答案中提到的框架引用给你) – Mchl 2010-09-02 10:01:49

1

我个人使用你在最后一段所描述的方式,并发现它是有用的,干净&快速execure。一定要将所有常见的东西移动到常见的libs /文件中,绝不应复制/粘贴。

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

2

我会说它没有问题太多你如何布局你的应用程序的文件夹。拥有文件是必要的,它对应用程序有一定的影响。解决影响。这不是你如何布局你的文件夹,这是为什么。在下面找到一些的想法。

为了安全起见,您应该只将这些脚本放入实际上应该直接可用于全世界的webroot中。另外,如果您有在运行时创建的文件,请确保在您的应用程序部署/更新到您的服务器时,这些文件不会被覆盖。无论您是在部署例程中还是通过文件夹布局解决该问题,都取决于您。

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

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

IMO,一个应用程序不是文件,它是其中的代码。让你的代码组织起来比你的文件更重要。有一个凌乱的文件布局是一个问题比凌乱的体系结构。