皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

如何正确构建 PHP 项目

作为一名 PHP 开发人员,你首先需要学习的其中一项就是框架的使用,例如流行的 CakePHP 和 Symfony 。当你在作为一位 PHP 开发者的职业生涯中一直使用这些格式时,你会发现有时候你很难从它们中获取你想要的。当你有一个具体想要实现的项目或者想法,你可能会发现没有一个合适的架构。 作为一位开发者,你很难有时间从成百个不同的 PHP 结构中找到一个最适合你的项目。如果你真的决定使用框架,你可能最终会以选了一个你根本不需要的结构。而且,这还会是一个臃肿而且可能会产生功能问题、降低维保速度的结构。

何为好的结构

第一步我们会建议查看如何将你的业务逻辑和其他所有事情分开。大部分的 PHP 开发者喜欢将逻辑和展示混在一起,但是这从长远来看会引发很多问题。尤其是如果你作为一个团队的开发者,你的同事就需要重审你的代码。如果你单独开发,你也要重写代码来添加功能、修复漏洞。一个清晰可读的代码会帮助你更快地完成你的项目。 你还需要记住的是某一天你的应用可能会流行起来,然后会被世界上百万的用户浏览。即使你现在没打算,但是使用一个翻译器来将你的代码翻译给全球的观众对你是有好处的。我们会建议你在你的代码里留有此翻译用来以防万一。

PHP 模板引擎

在你所有项目中使用模板引擎将节省大量时间。Blade是当今市场上功能最强大的模板引擎之一,它甚至内建于 Larvavel 4 框架中。 你可以使用的另一个流行的模板引擎是 Mustache。因为 Mustache 的简单易用,它也可以嵌入任何你能想到的编程语言中。它也被宣称为非逻辑模板引擎,这意味着它将只包含创建你的项目所需模板的最小文件集合。

使用模板的好处

使用模板最大的优点在于,它们有助于将业务逻辑与展示层分开。模板的责任是显示组织好的文件和用户可读的内容。然而,模板对于任何其他复杂的任务(如搜索或操作代码库)无能为力。 在某种程度上,模板引擎将迫使你拥有更整洁和更有条理的代码,而且我们都知道,这是非常重要的。模板也适用于代码重用,因为它们被放置到“views”文件夹中。 从 views 文件夹来看,你可以将大块代码分解成小的可重复使用的块,最好的例子是页面的页眉和页脚。

常规 PHP 项目代码架构

我们来看看由 Blade 生成的示例模板结构:

  • Source File
    • _config
    • config.environment.php
    • config.settings
  • _includes
    • blade
    • class.translator.php
  • _js
    • jquery
  • Template
    • _cache
    • _css
    • _translations
    • index
  • pages
    • index.php
    • .htaccess

Config 文件夹将会是你的主要组件的主文件夹,比如配置变量、数据库、类等等。如果有 PHP 字符串中包含配置变量,那么它们就应该被存储在你在上述架构中看到的配置文件中。 如果你使用了本地或者生产数据库环境,那就可以将对它们的配置存储在“config.environment.php”文件中。 你也会注意到,我们已经在这个模板中包含翻译器(translator)类,以便为上面所提到的未来用户翻译代码。当涉及到 JavaScript 文件时,你可以清楚地发现我们还创建了一个名为 “_js” 的文件夹。在这一个文件夹中,应该添加的是最新的 jQuery 文件以及所有其他的 JavaScript 文件。

Config 文件的特殊用途

使用你的配置文件也是所有 PHP 程序员应该学习的另一个重要概念。 如果你正在使用例如本地和生产环境等多种环境,则强烈建议你为每个数据库使用配置文件。一旦你为每个数据库设置了配置文件,你就可以从一个环境切换到另一个环境,而无需更改任何实际代码或导致应用程序中的错误。

结语

为了使 PHP 结构中获得最佳效果,建议使用模板引擎。你可以始终从零开始构建自己的结构,但是并不推荐这种方法,因为它可能非常耗时,并且可能会导致一些长期的问题。 模板引擎的观点是,他们将为您提供设计结构的自由,因为你认为适合你的项目的目标并没有复杂性。 你也可以试试像 CakePHP 这样一个知名的框架,但总的来说,对于具有特定要求的项目来说,这个框架是非常宽泛的。如果你的项目最终成为可以在系统中找到的多种功能的综合体,那么使用可以满足你需求的框架才是最好的选择。

参与翻译 (3人) : Tocy, 爱不爱吃鱼, leoxu
转自 https://www.oschina.net/translate/how-to-properly-structure-your-php-projects