Yii 是什么

Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。名字 Yii (读作 )在中文里有“极致简单与不断演变”两重含义,也可看作 Yes It Is! 的缩写。

Yii 最适合做什么?

Yii 是一个通用的 Web 编程框架,即可以用于开发各种用 PHP 构建的 Web 应用。因为基于组件的框架结构和设计精巧的缓存支持,它特别适合开发大型应用,如门户网站、社区、内容管理系统(CMS)、电子商务项目和 RESTful Web 服务等。

系统要求

Yii 2.0 需要 PHP 5.4.0 或以上版本支持。

总体目录结构

下面是我们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

根目录结构

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

后端(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。

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

Yii2.0官方高级模板的目录结构分析的更多相关文章

  1. [moka同学笔记]yii2.0 advanced高级版 安装配置 与 rbac (Ⅰ)

    1.下载地址:http://www.yiichina.com/download,下载 Yii2 的高级应用程序模板 2.配置与安装 在服务器www目录下yii2test  [下载下来更改advance ...

  2. YII2.0上传文件

    针对于YII2.0官方手册来说,我稍微修改了一些内容具体的就是把model层里定义的uoload方法在controller方法里合并了 创建模型 namespace app\models; use y ...

  3. yii2.0的学习之旅(一)

    一. 通过composer安装yii2.0项目 *本文是根据您已经安装了composer (1)跳转到项目根目录 cd /xxxx/www (2)下载插件 composer global requir ...

  4. Yii2高级模板vendor和application非同级目录部署

    上面是Yii2的高级模板,当我们有多个application的时候,这种高级模板可以可以提供很好的扩展性,多个application共用一份YII2框架,默认情况下,框架和application是在同 ...

  5. Yii2 高级模板不使用Apache配置目录,将前后台入口移到根目录

    刚刚入手Yii2高级模板不久,部署项目时,得部署2个应用,个人感觉很繁琐,就将前后台入口文件全部拿到项目根目录.但是一看,完了,出错了!找教程找不到,还是自己解决吧 为了以后好升级,不改变Yii2核心 ...

  6. PHP框架Yii2.0安装(基础版、高级版)

    最近农成也是切入了yiiframework 2.0,就是安装yii2.0就花费了不少的时间,为此做了很多的弯路,特此写一篇博文来给后面学习的同学少走一点的弯路.写的不好的地方欢迎各位学习的同学们能够指 ...

  7. Yii2.0 高级版安装 windows

    最近在学习yii2.0 在安装高级版的时候遇到一些问题 索性解决了 下面分享一下 一.关于下载 自行百度,在Yii Framework 中文社区 下载专区下载高级应用程序模板(这边下载用电信网络不用下 ...

  8. yii2.0高级框架配置时打开init.bat秒退的解决方法 (两种方法)

    第一种: 这几天刚接触到yii2.0框架,在配置advanced版本时运行init.bat初始化文件时老是闪退: 用cmd运行该文件时显示:The OpenSSL PHP extension is r ...

  9. yii2高级模板使用一个域名管理前后台

    yii2的高级模板分为backend和frontend,最开始用yii的时候并没怎么在意,就使用了两个域名分别解析前后台.今天无意间看见 可以使用一个域名指向前后台. 1.修改 advanced/ba ...

随机推荐

  1. @property、@synthesize和dynamic的用法

    原文:  http://blog.csdn.net/hherima/article/details/8622948 @代表“Objective-C”的标志,证明您正在使用Objective-C语言 O ...

  2. Java版求1000以内的完全数

    /* * 若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数,简称完数. * 例如:6=1+2+3. * 题目:求1000以内的完全数. */ public cl ...

  3. c#中,委托Func的简单实践

    c# 委托Func的简单实践最近才真正的接触委托,所以针对Func类型的委托,做一个实践练习. 首先说一些我对委托的初级理解:"就是把方法当做参数,传进委托方法里". 我平时用到的 ...

  4. 项目版本管理 github简介

    git config user.email "c.wuliying@samsung.com"git config user.name "swportal" ** ...

  5. CVE-2015-5122 简要分析(2016.4)

    CVE-2015-5122 简要分析 背景 最近在学习Flash漏洞的分析,其与IE漏洞的分析还是有诸多的不同(不便)之处,折腾了一阵子终于克服了没有符号表.Flash的超时定时器等问题.所以找到了去 ...

  6. Android Studio环境下代码混淆+签名打包

    Android Studio环境下代码混淆+签名打包 作者 Mr_冯先生 关注 2016.08.21 01:10 字数 1040 阅读 734评论 5喜欢 34 注:本文使用的Android Stud ...

  7. jquery操作ajax返回的页面元素

    这两天工作不忙,正好从朋友那里拿到一个某个应用的开发文档,相关数据放在了mongodb里,自己电脑可以本地开启服务器然后通过给的借口来获取数据.由于这是一个比较大比较全的一个完整项目,也没有那么多经历 ...

  8. Linux服务器rsync自动备份

    一.在 server 端配置 1. 编辑配置文件 #vi /etc/rsyncd.conf 添加下面的配置参数: uid = nobody # 该选项指定当该模块传输文件时守护进程应该具有的uid.默 ...

  9. PHP学习过程_Symfony_(2)

    今天正式学习Symfony;首先推荐一篇文章"十分钟学习Symfony"(这是我们老大写的,由于那些搞seo的家伙的粘贴复制也不写出处,老大干脆把代码库给清理了,不过幸好我提前fo ...

  10. Jmeter 多台机器产生负载

    使用多台机器产生负载的操作步骤如下: (1)在所有期望运行jmeter作为 负载生成器的机器上安装jmeter, 并确定其中一台机器作为 controller ,其他的的机器作为agent .然后运行 ...