Yii 中文文档.docx
- 文档编号:8952387
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:49
- 大小:232.61KB
Yii 中文文档.docx
《Yii 中文文档.docx》由会员分享,可在线阅读,更多相关《Yii 中文文档.docx(49页珍藏版)》请在冰豆网上搜索。
Yii中文文档
Yii是什么
Yii是一个基于组件、用于开发大型Web应用的高性能PHP框架。
它将Web编程中的可重用性发挥到极致,能够显著加速开发进程。
Yii(读作“易”)代表简单(easy)、高效(efficient)、可扩展(extensible)。
需求
要运行一个基于Yii开发的Web应用,你需要一个支持PHP5.1.0(或更高版本)的Web服务器。
对于想使用Yii的开发者而言,熟悉面向对象编程(OOP)会使开发更加轻松,因为Yii就是一个纯OOP框架。
Yii适合做什么?
Yii是一个通用Web编程框架,能够开发任何类型的Web应用。
它是轻量级的,又装配了很好很强大的缓存组件,因此尤其适合开发大流量的应用,比如门户、论坛、内容管理系统(CMS)、电子商务系统,等等。
Yii和其它框架比起来怎样?
和大多数PHP框架一样,Yii是一个MVC框架。
Yii以性能优异、功能丰富、文档清晰而胜出其它框架。
它从一开始就为严谨的Web应用开发而精心设计,不是某个项目的副产品或第三方代码的组合,而是融合了作者丰富的Web应用开发经验和其它热门Web编程框架(或应用)优秀思想的结晶。
安装
Yii的安装由如下两步组成:
1.从下载Yii框架。
2.将Yii压缩包解压至一个Web可访问的目录。
提示:
安装在Web目录不是必须的,每个Yii应用都有一个入口脚本,只有它才必须暴露给Web用户。
其它PHP脚本(包括Yii)应该保护起来不被Web访问,因为它们可能会被黑客利用。
需求
安装完Yii以后你也许想验证一下你的服务器是否满足使用Yii的要求,只需浏览器中输入如下网址来访问需求检测脚本:
http:
//hostname/path/to/yii/requirements/index.php
Yii的最低需求是你的Web服务器支持PHP5.1.0或更高版本。
Yii在Windows和Linux系统上的ApacheHTTP服务器中测试通过,应该在其它支持PHP5的Web服务器和平台上也工作正常。
建立第一个Yii应用
为了对Yii有个初步认识,我们在本节讲述如何建立第一个Yii应用。
我们将使用强大的yiic工具,它用来自动生成各种代码。
假定YiiRoot为Yii的安装目录。
在命令行运行yiic,如下所示:
%YiiRoot/framework/yiicwebappWebRoot/testdrive
注意:
在MacOS、Linux或Unix系统中运行yiic时,你可能需要修改yiic文件的权限使它能够运行。
你也可以用phpYiiRoot/framework/yiic.php来代替yiic。
这将在WebRoot/testdrive目录下建立一个最基本的Yii应用,WebRoot代表你的Web服务器根目录。
这个应用具有所有必须的目录和文件,因此可以方便地在此基础上添加更多功能。
不用写一行代码,我们可以在浏览器中访问如下URL来看看我们第一个Yii应用:
http:
//hostname/testdrive/index.php
正如我们看到的,这个应用包含三个页面:
首页、联系页、登录页。
首页展示一些关于应用和用户登录状态的信息,联系页显示一个联系表单以便用户填写并提交他们的咨询,登录页允许用户先通过认证然后访问已授权的内容。
查看下列截图了解更多:
首页
联系页
输入错误的联系页
提交成功的联系页
登录页
下面的树图描述了我们这个应用的目录结构。
请查看约定以获取该结构的详细解释。
testdrive/
index.phpWeb应用入口脚本文件
assets/包含公开的资源文件
css/包含CSS文件
images/包含图片文件
themes/包含应用主题
protected/包含受保护的应用文件
yiicyiic命令行脚本
yiic.batWindows下的yiic命令行脚本
commands/包含自定义的'yiic'命令
shell/包含自定义的'yiicshell'命令
components/包含可重用的用户组件
MainMenu.php'MainMenu'挂件类
Identity.php用来认证的'Identity'类
views/包含挂件的视图文件
mainMenu.php'MainMenu'挂件的视图文件
config/包含配置文件
console.php控制台应用配置
main.phpWeb应用配置
controllers/包含控制器的类文件
SiteController.php默认控制器的类文件
extensions/包含第三方扩展
messages/包含翻译过的消息
models/包含模型的类文件
LoginForm.php'login'动作的表单模型
ContactForm.php'contact'动作的表单模型
runtime/包含临时生成的文件
views/包含控制器的视图和布局文件
layouts/包含布局视图文件
main.php所有视图的默认布局
site/包含'site'控制器的视图文件
contact.php'contact'动作的视图
index.php'index'动作的视图
login.php'login'动作的视图
system/包含系统视图文件
连接到数据库
大多数Web应用由数据库驱动,我们的测试应用也不例外。
要使用数据库,我们首先需要告诉应用如何连接它。
修改应用的配置文件WebRoot/testdrive/protected/config/main.php即可,如下所示:
returnarray(
......
'components'=>array(
......
'db'=>array(
'connectionString'=>'sqlite:
protected/data/source.db',
),
),
......
);
在上面的代码中,我们添加了db条目至components中,指示应用在需要的时候连接到SQLite数据库WebRoot/testdrive/protected/data/source.db。
注意:
要使用Yii的数据库功能,我们需要启用PHP的PDO扩展和相应的驱动扩展。
对于测试应用来说,我们需要启用php_pdo和php_pdo_sqlite扩展。
接下来,我们需要准备一个SQLite数据库以使上面的配置生效。
使用一些SQLite管理工具,我们可以建立一个包含如下模式的数据库:
CREATETABLEUser(
idINTEGERNOTNULLPRIMARYKEYAUTOINCREMENT,
usernameVARCHAR(128)NOTNULL,
passwordVARCHAR(128)NOTNULL,
emailVARCHAR(128)NOTNULL
);
简单起见,我们只在库中建立了一个User表。
SQLite数据库文件保存在WebRoot/testdrive/protected/data/source.db。
注意,数据库文件和包含它的目录都要求Web服务器进程可写。
实现CRUD操作
激动人心的时刻来了。
我们想要为刚才建立的User表实现CRUD(create,read,update和delete)操作,这也是实际应用中最常见的操作。
我们还是用yiic工具来帮助我们生成需要的代码,这个过程通常称为“脚手架”。
%cdWebRoot/testdrive
%YiiRoot/framework/yiicshell
YiiInteractiveToolv1.0
Pleasetype'help'forhelp.Type'exit'toquit.
>>modelUser
generateUser.php
The'User'classhasbeensuccessfullycreatedinthefollowingfile:
D:
\wwwroot\testdrive\protected\models\User.php
Ifyouhavea'db'databaseconnection,youcantestitnowwith:
$model=User:
:
model()->find();
print_r($model);
>>crudUser
generateUserController.php
generatecreate.php
mkdirD:
/wwwroot/testdrive/protected/views/user
generateupdate.php
generatelist.php
generateshow.php
Crud'user'hasbeensuccessfullycreated.Youmayaccessitvia:
http:
//hostname/path/to/index.php?
r=user
如上所示,我们使用yiic的shell命令来和我们刚才建立的应用进行交互。
在提示符后面,我们可以输入一个有效的PHP语句或表达式来运行并显示。
我们还可以完成一些诸如model或crud之类的任务。
model命令自动生成一个基于User表结构的User模型类,crud命令生成实现User模型CRUD操作的控制器类和视图。
注意:
如果你更改了你的任何代码或配置,请重新输入yiicshell以使你的新代码或配置文件生效。
还有,确保你使用了正确的PHPCLI来运行yiic,否则你会碰到"...couldnotfinddriver"之类的错误(即使你确信已经启用了PDO和相应的驱动)。
这类错误通常是因为PHPCLI使用了不恰当的php.ini。
让我们看看成果,访问如下URL:
http:
//hostname/testdrive/index.php?
r=user
这会显示一个User表中记录的列表。
因为我们的表是空的,现在什么都没显示。
点击页面上的新增用户链接,如果没有登录的话我们将被带到登录页。
登录后,我们看到一个可供我们添加新用户的表单。
完成表单并点击建立按钮,如果有任何输入错误的话,一个友好的错误提示将会显示并阻止我们保存。
回到用户列表页,我们应该能看到刚才添加的用户显示在列表中。
重复上述步骤以添加更多用户。
注意,如果一页显示的用户条目太多,列表页会自动分页。
如果我们使用admin/admin作为管理员登录,我们可以在如下URL查看用户管理页:
http:
//hostname/testdrive/index.php?
r=user/admin
这会显示一个包含用户条目的漂亮表格。
我们可以点击表头的单元格来对相应的列进行排序,而且它和列表页一样会自动分页。
实现所有这些功能不要我们编写一行代码!
用户管理页
新增用户页
模型-视图-控制器(MVC)
Yii实现了Web编程中广为采用的“模型-视图-控制器”(MVC)设计模式。
MVC致力于分离业务逻辑和用户界面,这样开发者可以很容易地修改某个部分而不影响其它。
在MVC中,模型表现信息(数据)和业务规则;视图包含用户界面中用到的元素,比如文本、表单输入框;控制器管理模型和视图间的交互。
除了MVC,Yii还引入了一个叫做application的前端控制器,它表现整个请求过程的运行环境。
Application接收用户的请求并把它分发到合适的控制器作进一步处理。
下图描述了一个Yii应用的静态结构:
Yii应用的静态结构
一个典型的处理流程
下图描述了一个Yii应用处理用户请求时的典型流程:
Yii应用的典型流程
1.用户访问服务器执行入口脚本index.php来处理该请求。
2.入口脚本建立一个应用实例并运行之。
3.应用从一个叫request的应用组件获得详细的用户请求信息。
4.在名为urlManager的应用组件的帮助下,应用确定用户要请求的控制器和动作。
5.应用建立一个被请求的控制器实例来进一步处理用户请求,控制器确定由它的actionShow方法来处理show动作。
然后它建立并应用和该动作相关的过滤器(比如访问控制和性能测试的准备工作),如果过滤器允许的话,动作被执行。
6.动作从数据库读取一个ID为1的Post模型。
7.动作使用Post模型来渲染一个叫show的视图。
8.视图读取Post模型的属性并显示之。
9.视图运行一些挂件。
10.视图的渲染结果嵌在布局中。
11.动作结束视图渲染并显示结果给用户。
入口脚本
入口脚本是在前期处理用户请求的引导脚本。
它是唯一一个最终用户可以直接请求运行的PHP脚本。
大多数情况下,一个Yii应用的入口脚本只包含如下几行:
//部署到正式环境时去掉下面这行
defined('YII_DEBUG')ordefine('YII_DEBUG',true);
//包含Yii引导文件
require_once('path/to/yii/framework/yii.php');
//建立应用实例并运行
$configFile='path/to/config/file.php';
Yii:
:
createWebApplication($configFile)->run();
这段代码首先包含了Yii框架的引导文件yii.php,然后它配合指定的配置文件建立了一个Web应用实例并运行。
调试模式
一个Yii应用能够根据YII_DEBUG常量的指示以调试模式或者生产模式运行。
默认情况下该常量定义为false,代表生产模式。
要以调试模式运行,在包含yii.php文件前将此常量定义为true。
应用以调试模式运行时效率较低,因为它会生成许多内部日志。
从另一个角度来看,发生错误时调试模式会产生更多的调试信息,因而在开发阶段非常有用。
应用
Applicationrepresentstheexecutioncontextofrequestprocessing.Itsmaintaskistoresolvetheuserrequestanddispatchittoanappropriatecontrollerforfurtherprocessing.Italsoservesasthecentralplaceforkeepingapplication-levelconfigurations.Forthisreason,applicationisalsocalledfront-controller.
入口脚本将应用创建为一个单例.应用单例可以在任何位置通过Yii:
:
app()来访问.
应用配置
默认情况下,应用是CWebApplication类的一个实例.要对其进行定制,通常是在应用实例被创建的时候提供一个配置文件(或数组)来初始化其属性值.另一个定制应用的方法就是扩展CWebApplication类.
配置是一个键值对的数组.每个键名都对应应用实例的一个属性,相应的值为属性的初始值.举例来说,下面的代码设定了应用的名称和默认控制器属性.
array(
'name'=>'YiiFramework',
'defaultController'=>'site',
)
WeusuallystoretheconfigurationinaseparatePHPscript(e.g.protected/config/main.php).Insidethescript,wereturntheconfigurationarrayasfollows,
returnarray(...);
Toapplytheconfiguration,wepasstheconfigurationfilenameasaparametertotheapplication'sconstructor,ortoYii:
:
createWebApplication()likethefollowing,whichisusuallydoneintheentryscript:
$app=Yii:
:
createWebApplication($configFile);
提示:
Iftheapplicationconfigurationisverycomplex,wecansplititintoseveralfiles,eachreturningaportionoftheconfigurationarray.Then,inthemainconfigurationfile,wecallPHPinclude()toincludetherestconfigurationfilesandmergethemintoacompleteconfigurationarray.
ApplicationBaseDirectory
Applicationbasedirectoryreferstotherootdirectorythatcontainsallsecurity-sensitivePHPscriptsanddata.Bydefault,itisasubdirectorynamedprotectedthatislocatedunderthedirectorycontainingtheentryscript.ItcanbecustomizedviasettingthebasePathpropertyintheapplicationconfiguration.
ContentsundertheapplicationbasedirectoryshouldbeprotectedfrombeingaccessedbyWebusers.WithApacheHTTPserver,thiscanbedoneeasilybyplacinga.htaccessfileunderthebasedirectory.Thecontentofthe.htaccessfileisasfollows,
denyfromall
应用的部件
Functionalitiesofapplicationcanbeeasilycustomizedandenrichedwithitsflexiblecomponentarchitecture.Applicationmanagesasetofapplicationcomponents,eachimplementingspecificfeatures.Forexample,applicationresolvesauserrequestwiththehelpofCUrlManagerandCHttpRequestcomponents.
Byconfiguringthecomponentspropertyofapplication,wecancustomizetheclassandpropertyvaluesofanyapplicationcomponentusedinanapplication.Forexample,wecanconfigureCMemCachecomponentsothatitcanusemultiplememcacheserversforcaching,
array(
......
'components'=>array(
......
'cache'=>array(
'class'=>'CMemCache',
'servers'=>array(
array('host'=>'server1','port'=>11211,'weight'=>60),
array('host'=>'server2','port'=>11211,'weight'=>40),
),
),
),
)
Intheabove,weaddthecacheelementtothecomponentsarray.ThecacheelementstatesthattheclassofthecomponentisCMemCacheanditsserverspropertyshouldbeinitializedassuch.
Toaccessanapplicationcomponent,useYii:
:
app()->ComponentID,whereComponentIDreferstotheIDofthecomponent(e.g.Yii:
:
app()->cache).
Anapplicationcomponentmaybedisabledbysettingenabledtobefalseinitsconfiguration.Nullisreturnedwhenweaccessadisabledcomponent.
提示:
Bydefault,applicationcomponentsarecreatedondemand.Thismeansanapplicationcomponentmaynotbecreatedatallifitisnotaccessedduringauserrequest.Asaresult,theoverallperformancemaynotbedegradedevenifanapplicationisconfiguredwithmanycomponents.Someapplicationcomponen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Yii 中文文档 中文 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)