Yii 之初体验

在这一部分里,我们将讲解怎样建立一个程序的骨架作为着手点。为简单起见,我们假设Web服务器根目录是 /wwwroot ,相应的URL是 http://www.example.com/

1. 安装Yii

首先,我们来安装Yii框架。 从 www.yiiframework.com 获取一份Yii的拷贝,解压缩到 /wwwroot/yii。再次检查以确保 /wwwroot/yii/framework 目录存在。

提示: Yii框架可以安装在文件系统的任何地方,而不是必须在Web目录中。它的 framework 目录包含了框架的代码,这也是部署Yii应用时唯一一个必要的目录。一个单独的Yii安装可以被用于多个Yii应用。

Yii安装完毕之后,打开浏览器访问URL http://www.example.com/yii/requirements/index.php。它将显示Yii提供的需求检查程序。对我们的Blog应用来说,除了Yii所需的最小需求之外,我们还需要启用 pdopdo_sqlite 这两个PHP 扩展。这样我们才能访问SQLite数据库。

2. 创建应用骨架

然后,我们使用 yiic 工具在 /wwwroot/blog 目录下创建一个应用骨架。yiic 工具是在Yii发布包中提供的命令行工具。它可以用于创建代码以减少某些重复的编码工作。

打开一个命令行窗口,执行以下命令:

% /wwwroot/yii/framework/yiic webapp /wwwroot/blog
Create a Web application under '/wwwroot/blog'? [Yes|No]y
......

提示: 为了使用上面提到的 yiic 工具,CLI PHP 程序必须在命令搜索路径内(译者注:即 php.exe 所在的目录必须在PATH环境变量中),否则,可能要使用下面的命令:

path/to/php /wwwroot/yii/framework/yiic.php webapp /wwwroot/blog

要查看我们刚创建的应用,打开浏览器访问 URL http://www.example.com/blog/index.php。可以看到我们的程序骨架已经有了四个具备完整功能的页面:首页(Home),“关于”页(About),联系页(Contact)和登录页(Login)。

接下来,我们简单介绍一下在这个程序骨架中的内容。

入口脚本

我们有一个入口脚本 文件 /wwwroot/blog/index.php ,内容如下:

<?php
$yii='/wwwroot/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
 
// remove the following line when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
 
require_once($yii);
Yii::createWebApplication($config)->run();

这是唯一一个网站用户可以直接访问的脚本。此脚本首先包含了Yii的引导文件 yii.php。然后它按照指定的配置创建了一个应用 实例并执行此应用。

基础应用目录

我们还有一个 应用基础目录 /wwwroot/blog/protected。我们主要的代码和数据将放在此目录下,它应该被保护起来,防止网站访客的直接访问。针对 Apache httpd 网站服务器 ,我们在此目录下放了一个 .htaccess 文件,其内容如下:

deny from all

对于其他的网站服务器,请参考相应的关于保护目录以防止被访客直接访问的相关文档。

3. 应用的工作流程

为了帮你理解Yii是怎样工作的,对于我们的程序骨架,当有人访问它的联系页(Contact)时,我们对它的工作流程描述如下:

  1. 用户请求此 URL http://www.example.com/blog/index.php?r=site/contact
  2. 入口脚本 被网站服务器执行以处理此请求;
  3. 一个 应用 的实例被创建,其配置参数为/wwwroot/blog/protected/config/main.php 应用配置文件中指定的初始值;
  4. 应用分派此请求到一个 控制器(Controller) 和一个 控制器动作(Controller action)。对于联系页(Contact)的请求,它分派到了 site 控制器和 contact 动作 (即 /wwwroot/blog/protected/controllers/SiteController.php 中的 actionContact 方法);
  5. 应用按 SiteController 实例创建了 site 控制器并执行;
  6. SiteController 实例通过调用它的 actionContact() 方法执行 contact 动作;
  7. actionContact 方法为用户渲染一个名为 contact视图(View) 。在程序内部,这是通过包含一个视图文件 /wwwroot/blog/protected/views/site/contact.php 并将结果插入 布局 文件 /wwwroot/blog/protected/views/layouts/column1.php 实现的。
发现错别字或您认为此页面需要改进?
点此进入 Github 编辑!