Yii2.0官方高级模板的目录结构分析
打算本身作个新的项目,会在博客记录天天所作的事。最近在学习Yii框架,虽然Yaf我也在看,不过主要精力都在Yii上面了,决定作个相似贴吧的小站,框架选择了Yii,在网上看了一些关于Yii的文章,以为这篇不错,之后个人这个站就采用这种部署方式。
在这篇文章中,描述了yiiframework.com站点使用目录结构 – Yii框架项目的官方网站。虽然这种结构可能显得过于复杂的对于小项目或是小的团队,或在某种意义上可能不是最佳的选择,但咱们相信,它是很是适合在中型 或大型项目团队一块儿开发环境的。事实上,咱们已经成功地使用在其余一些大项目相似的结构。
整体目录结构
下面是咱们Yii 官方站点正在使用的目录结构:
/
backend/
common/
components/
config/
params.php
params-local.php *
lib/
Pear/
yii/
Zend/
migrations/
models/
Comment.php
Extension.php
…
console/
commands/
SitemapCommand.php
…
config/
main.php
main-local.php *
params.php
params-local.php *
runtime/
yiic.php *
frontend/
components/
config/
main.php
main-local.php *
params.php
params-local.php *
controllers/
SiteController.php
…
lib/
models/
ContactForm.php
SearchForm.php
runtime/
views/
layouts/
site/
www/
assets/
css/
js/
index.php *
yiic
yiic.bat
在一个团队开发的环境,咱们一般都会使用一些源代码版本的系统(如SVN,GIT)来管理上述的目录结构。带有星号标注的文件名不须要放在版本控制里面,在后面咱们将解释到。
根目录结构
在工程顶层根目录下,咱们有四个目录:
后端(backend):后端应用程序,它主要用于管理后台,网站管理员来管理整个系统。
前端(frontend):咱们的目标最终用户提供的主要接口的前端应用。
控制台(console):控制台应用程序包含系统所须要的控制台命令的。
共同的特色(common):前端和后端,以及控制台共用的。
正如咱们能够看到,咱们整个系统划分红三个应用程序:后端,前端和控制台。固然,若是须要,咱们能够添加更多的应用程序(如API,提供Web API服务),根据本身的需求而定。咱们使用共同(common)目录下的文件在不一样应用程序之间共享。
应用程序目录
每一个应用程序的目录结构很是类似。例如,对于前端和后端,它们都具备这些目录:
组件(components):包含这个应用程序使用的组件(如帮助类,工具类小部件)
配置(config):包含由应用程序使用的配置
控制器(controllers):包含控制器类
LIB(lib):只用于此应用程序包含第三方库
模型(models):包含这个应用程序须要用到的数据库映射模型类
运行(runtime):存储动态生成的文件
视图(views):存储控制器动做视图脚本
网站根目录(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.php,params.php)和本地配置(例如主要local.php,PARAMS- local.php)。
基本配置应置于版本控制之下,像普通的源代码,使每一个开发人员能够经过共享。本地配置不该该被增长到版本控制之下,应该只存在于每个人开发者的工做文件夹。开发人员能够自由的来修改他的本地配置。
在应用程序的引导脚本index.php文件,咱们能够合并的基础和本地配置和再配置的应用实例,如如下:
<?php
require('path/to/yii.php');
$local = require('path/to/main-local.php');
$base = require('path/to/main.php');
$config = CMap::mergeArray($base, $local);
Yii::createApplication($config)->run();
路径别名(Path Alias)配置
为了便于在不一样的应用程序中引用文件,咱们也声明包含这四个顶级目录的根目录根路径别名网站(译者注: 也就是至关你的工程名称)。
所以,在前台应用程序中声明咱们可使用site.frontend.models.ContactForm来引用ContactForm类
部署应用(Deployment )
在项目开发过程结束后,咱们须要将它部署到生产服务器。使用FTP或其余相似的服务将应用程序文件上传到服务器,咱们可使用版本控制系统去作部署。而后,咱们建立或修改的本地生产服务器的具体配置。例如,咱们可能须要调整DB链接参数。咱们可能要定义YII_DEBUG在index.php设为false。
由于咱们每一个应用程序存储在一个单独的目录,这样就带来了更多的灵活性,若是你有多台服务器,你能够将它们部署到不一样的服务器,很是适合大型网站。
欢迎关注本站公众号,获取更多信息