看到Qiang写的这篇文章,非常不错,权威性的Yii项目站点结构指南,目前本站均是采用这种目录结构。

在这篇文章中,我们描述yiiframework.com站点使用目录结构 – Yii框架项目的官方网站。虽然这种结构可能显得过于复杂的对于小项目或是小的团队,或在某种意义上可能不是最佳的选择,但我们相信,它是非常适合在中型 或大型项目团队一起开发环境的。事实上,我们已经成功地使用在其他一些大项目类似的结构。

总体目录结构

下面是我们Yii 官方站点正在使用的目录结构:

 
    
    
    
    
  1.     backend/ 
  2.     common/ 
  3.         components/ 
  4.         config/ 
  5.             params.php 
  6.             params-local.php * 
  7.         lib/ 
  8.             Pear/ 
  9.             yii/ 
  10.             Zend/ 
  11.         migrations/ 
  12.         models/ 
  13.             Comment.php 
  14.             Extension.php 
  15.             … 
  16.     console/ 
  17.         commands/ 
  18.             SitemapCommand.php 
  19.             … 
  20.         config/ 
  21.             main.php 
  22.             main-local.php * 
  23.             params.php 
  24.             params-local.php * 
  25.         runtime/ 
  26.         yiic.php * 
  27.     frontend/ 
  28.         components/ 
  29.         config/ 
  30.             main.php 
  31.             main-local.php * 
  32.             params.php 
  33.             params-local.php * 
  34.         controllers/ 
  35.             SiteController.php 
  36.             … 
  37.         lib/ 
  38.         models/ 
  39.             ContactForm.php 
  40.             SearchForm.php 
  41.         runtime/ 
  42.         views/ 
  43.             layouts/ 
  44.             site/ 
  45.         www/ 
  46.             assets/ 
  47.             css/ 
  48.             js/ 
  49.             index.php * 
  50.     yiic 
  51.     yiic.bat 

在一个团队开发的环境,我们通常都会使用一些源代码版本的系统(如SVN,GIT)来管理上述的目录结构。带有星号标注的文件名不需要放在版本控制里面,在后面我们将解释到。

根目录结构
在工程顶层根目录下,我们有四个目录:

 
    
    
    
    
  1. 后端(backend):后端应用程序,它主要用于管理后台,网站管理员来管理整个系统。 
  2. 前端(frontend):我们的目标最终用户提供的主要接口的前端应用。 
  3. 控制台(console):控制台应用程序包含系统所需要的控制台命令的。 
  4. 共同的特点(common):前端和后端,以及控制台共用的。 

正如我们可以看到,我们整个系统划分成三个应用程序:后端,前端和控制台。当然,如果需要,我们可以添加更多的应用程序(如API,提供Web API服务),根据自己的需求而定。我们使用共同(common)目录下的文件在不同应用程序之间共享。

应用程序目录
每个应用程序的目录结构非常相似。例如,对于前端和后端,它们都具有这些目录:

 
     
     
     
     
  1. 组件(components):包含这个应用程序使用的组件(如帮助类,工具类小部件) 
  2. 配置(config):包含由应用程序使用的配置 
  3. 控制器(controllers):包含控制器类 
  4. LIB(lib):只用于此应用程序包含第三方库 
  5. 模型(models):包含这个应用程序需要用到的数据库映射模型类 
  6. 运行(runtime):存储动态生成的文件 
  7. 视图(views):存储控制器动作视图脚本 
  8. 网站根目录(WWW):应用程序网站的Web根目录 

控制台(console)目录结构略与其它应用程序目录不同,因为它不需要控制器(controllers),视图(views)和网站根目录(www)。相反,它包含一个(commands)目录来存储所有控制台的命令类文件。

公共(Common)目录
公共的目录(Common)中包含的文件用于其它应用程序之间共享。例如,每一个应用程序可能需要访问该数据库的使用 ActiveRecord。因此,我们可以将AR模型类放置在公共(common)的目录下。同样,如果在多个应用程序中使用了一些辅助(helper )或部件类(widget ),我们也应该把这些放置在公共目录(common)下,以避免重复的代码。

为了便于代码的维护,我们组织这个公共目录结构(common)类似这个应用程序的目录。例如,我们有组件(components),模型(models),第三方库(lib)等等.

正如我们将很快解释,应用程序也可以共享一部分的共用配置。因此,我们还可以存储config目录下共同的常见配置。

当开发一个大型项目开发周期长,我们需要不断调整数据库结构。出于这个原因,我们还可以使用数据库迁移(DB migrations )功能来保持跟踪数据库的变化。我们将所有 DB migrations(数据库迁移)目录同样都放在公共(common)目录下面。

应用程序(Application )配置

同一系统中的应用通常有着一些共用的配置,如数据库连接配置,应用程序的参数,为了消除重复的代码,
我们应该提取这些共用的配置,它们保存在一个中心位置。在我们的设置,我们把这些放置在公共目录(common)的配置(config)目录下。
在团队开发的环境中工作时,不同的开发人员可能有不同的开发环境(如操作系统,目录,数据库连接)。这些环境也往往都是来自不同的生产环境。为了避免开发者之间的代码冲突,我们分成两部分的配置:基本配置(如main.phpparams.php)和本地配置(例如主要local.phpPARAMS- local.php)。
基本配置应置于版本控制之下,像普通的源代码,使每个开发人员可以通过共享。本地配置不应该被增加到版本控制之下,应该只存在于每一个人开发者的工作文件夹。开发人员可以自由的来修改他的本地配置。
在应用程序的引导脚本index.php文件,我们可以合并的基础和本地配置和再配置的应用实例,如以下:

 
     
     
     
     
  1. require(‘path/to/yii.php’); 
  2. $local=require(‘path/to/main-local.php’); 
  3. $base=require(‘path/to/main.php’); 
  4. $config=CMap::mergeArray($base$local); 
  5. Yii::createApplication($config)->run(); 

路径别名(Path Alias)配置

为了便于在不同的应用程序中引用文件,我们也声明包含这四个顶级目录的根目录根路径别名网站(译者注: 也就是相当你的工程名称)。因此,在前台应用程序中声明我们可以使用site.frontend.models.ContactForm来引用ContactForm类

部署应用(Deployment )

在项目开发过程结束后,我们需要将它部署到生产服务器。使用FTP或其他类似的服务将应用程序文件上传到服务器,我们可以使用版本控制系统去做部署。然后,我们创建或修改的本地生产服务器的具体配置。例如,我们可能需要调整DB连接参数。我们可能要定义YII_DEBUGindex.php设为false

因为我们每个应用程序存储在一个单独的目录,这样就带来了更多的灵活性,如果你有多台服务器,你可以将它们部署到不同的服务器,非常适合大型网站。

英文原文地址:
http://www.yiiframework.com/wiki/155/the-directory-structure-of-the-yii-project-site/#hh0

转载请注明: 源文出自: IT快讯网 |  原文地址: Yii 官方站点的目录结构