您好,欢迎访问三七文档
第1页共112页Yiiframework中文手册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.从yiiframework.com下载Yii框架。2.将Yii压缩包解压至一个Web可访问的目录。提示:安装在Web目录不是必须的,每个Yii应用都有一个入口脚本,只有它才必须暴露给Web用户。其它PHP脚本(包括Yii)应该保护起来不被Web访问,因为它们可能会被黑客利用。需求安装完Yii以后你也许想验证一下你的服务器是否满足使用Yii的要求,只需浏览器中输入如下网址来访问需求检测脚本:第2页共112页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应用:正如我们看到的,这个应用包含三个页面:首页、联系页、登录页。首页展示一些关于应用和用户登录状态的信息,联系页显示一个联系表单以便用户填写并提交他们的咨询,登录页允许用户先通过认证然后访问已授权的内容。查看下列截图了解更多:首页第3页共112页联系页第4页共112页输入错误的联系页第5页共112页提交成功的联系页第6页共112页登录页下面的树图描述了我们这个应用的目录结构。请查看约定以获取该结构的详细解释。testdrive/index.phpWeb应用入口脚本文件assets/包含公开的资源文件css/包含CSS文件第7页共112页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(第8页共112页'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/yiicshellYiiInteractiveToolv1.0Pleasetype'help'forhelp.Type'exit'toquit.modelUsergenerateUser.phpThe'User'classhasbeensuccessfullycreatedinthefollowingfile:D:\:第9页共112页$model=User::model()-find();print_r($model);crudUsergenerateUserController.phpgeneratecreate.phpmkdirD:/:=user如上所示,我们使用yiic的shell命令来和我们刚才建立的应用进行交互。在提示符后面,我们可以输入一个有效的PHP语句或表达式来运行并显示。我们还可以完成一些诸如model或crud之类的任务。model命令自动生成一个基于User表结构的User模型类,crud命令生成实现User模型CRUD操作的控制器类和视图。注意:如果你更改了你的任何代码或配置,请重新输入yiicshell以使你的新代码或配置文件生效。还有,确保你使用了正确的PHPCLI来运行yiic,否则你会碰到...couldnotfinddriver之类的错误(即使你确信已经启用了PDO和相应的驱动)。这类错误通常是因为PHPCLI使用了不恰当的php.ini。让我们看看成果,访问如下URL:=user这会显示一个User表中记录的列表。因为我们的表是空的,现在什么都没显示。点击页面上的新增用户链接,如果没有登录的话我们将被带到登录页。登录后,我们看到一个可供我们添加新用户的表单。完成表单并点击建立按钮,如果有任何输入错误的话,一个友好的错误提示将会显示并阻止我们保存。回到用户列表页,我们应该能看到刚才添加的用户显示在列表中。重复上述步骤以添加更多用户。注意,如果一页显示的用户条目太多,列表页会自动分页。如果我们使用admin/admin作为管理员登录,我们可以在如下URL查看用户管理页:=user/admin这会显示一个包含用户条目的漂亮表格。我们可以点击表头的单元格来对相应的列进行排序,而且它和列表页一样会自动分页。实现所有这些功能不要我们编写一行代码!用户管理页第10页共112页新增用户页第11页共112页模型-视图-控制器(MVC)Yii实现了Web编程中广为采用的“模型-视图-控制器”(MVC)设计模式。MVC致力于分离业务逻辑和用户界面,这样开发者可以很容易地修改某个部分而不影响其它。在MVC中,模型表现信息(数据)和业务规则;视图包含用户界面中用到的元素,比如文本、表单输入框;控制器管理模型和视图间的交互。除了MVC,Yii还引入了一个叫做application的前端控制器,它表现整个请求过程的运行环境。Application接收用户的请求并把它分发到合适的控制器作进一步处理。下图描述了一个Yii应用的静态结构:Yii应用的静态结构第12页共112页一个典型的处理流程下图描述了一个Yii应用处理用户请求时的典型流程:Yii应用的典型流程1.用户访问=post/show&id=1,Web服务器执行入口脚本index.php来处理该请求。2.入口脚本建立一个应用实例并运行之。3.应用从一个叫request的应用组件获得详细的用户请求信息。4.在名为urlManager的应用组件的帮助下,应用确定用户要请求的控制器和动作。第13页共112页5.应用建立一个被请求的控制器实例来进一步处理用户请求,控制器确定由它的actionShow方法来处理show动作。然后它建立并应用和该动作相关的过滤器(比
本文标题:Yii中文开发手册
链接地址:https://www.777doc.com/doc-6204938 .html