欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    PHP开发框架Yii全方位教程1应用 Yiiapp.docx

    • 资源ID:9916544       资源大小:23.36KB        全文页数:13页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    PHP开发框架Yii全方位教程1应用 Yiiapp.docx

    1、PHP开发框架Yii全方位教程1应用 YiiappPHP开发框架Yii全方位教程(1)应用 (Yii:app)应用代表了整个请求的运行过程。其主要任务是解析用户请求,并将其分配给相应的控制器以进行进一步的处理。它同时也是保存应用级配置的核心。因此,应用一般被称为“前端控制器”。在入口脚本中,应用被创建为一个单例。它可以在任何位置通过 Yii:app() 来被访问。应用配置默认情况下, 应用是 CWebApplication 类的一个实例。 要对其进行定制, 通常是在应用实例被创建的时候提供一个配置文件 (或数组) 来初始化其属性值。另一个定制应用的方法就是扩展 CWebApplication

    2、类。配置是一个键值对的数组。 每个键名都对应应用实例的一个属性,相应的值为属性的初始值。举例来说,下面的代码设定了应用的 name 和 defaultController 属性。array( name=Yii Framework, defaultController=site,)我们一般将配置保存在一个单独的PHP脚本中(如protected/config/main.php)。 在这个脚本中,我们按如下方式返回配置数组,return array(.);为应用这些配置,我们一般将这个文件的文件名作为一个参数,传递给应用的构造器。或者像下述例子这样传递给Yii:createWebApplicati

    3、on() ,就像我们经常在入口脚本里做的那样:$app=Yii:createWebApplication($configFile);如果应用配置非常复杂,我们可以将这分成几个文件,每个文件返回一部分配置参数。接下来,我们在主配置文件里用PHP 的include() 把其它配置文件加载进来并合并成一个配置数组。应用的主目录应用的主目录是指包含所有安全系数比较高的PHP代码和数据的根目录。在默认情况下,这个目录一般和入口脚本所在目录同级的一个子目录: protected 。这个路径可以通过在应用配置里设置 basePath属性来改变.不应该让WEB用户访问应用文件夹里的内容。在 Apache HT

    4、TP 服务器里,我们可以在这个文件夹里放一个 .htaccess 文件来实现。.htaccess的文件内容是这样的:deny from all应用组件我们可以很容易的通过组件(component)设置和丰富一个应用(Application)的功能。一个应用可以有很多应用组件,每个组件都执 行一些特定的功能。比如说,一个应用可能通过CUrlManager 和 CHttpRequest组件来解析用户的访问请求。通过配置应用的 components 属性 , 我们可以为应用中的每个应用组件,配置类名及其参数。例如,我们可以配置CMemCache组件以便用服务器的内存当缓存:array( . comp

    5、onents=array( . cache=array( class=CMemCache, servers=array( array(host=server1, port=11211, weight=60), array(host=server2, port=11211, weight=40), ), ), ),)在上述例子中,我们将 cache 元素加在 components 数组里. 这个 cache 元素告诉我们这个组件的类是 CMemCache ,以及其 servers 属性应该如何初始化。要调用组件,可以使用:Yii:app()-ComponentID,其中ComponentID是指

    6、这个组件的ID。 (比如 Yii:app()-cache).我们可以在应用配置里,将 enabled 设置为false来关闭一个组件。当我们访问一个被禁止的组件时,系统会返回一个NULL值。默认情况下,应用组件是根据需要而创建的。这意味着一个组件只有在被访问的情况下才会创建。 因此,系统的整体性能不会因为配置了很多组件而下降。有些组件,(比如CLogRouter) 是不管用不用都要创建的。在这种情况下,我们在应用的配置文件里将这些组件的ID加入到应用的preload属性中。应用的核心组件Yii预定义了一套核心应用组件提供Web应用程序的常见功能。例如,request组件用于解析用户请求和提供网

    7、址、cookie等信息。几乎在每一个方面,我们都可以通过配置这些核心组件的属性,来更改Yii的默认行为。下面我们列出CWebApplication预先声明的核心组件。assetManager: CAssetManager -管理发布私有asset文件。authManager: CAuthManager - 管理基于角色控制 (RBAC)。cache: CCache - 提供数据缓存功能。请注意,您必须指定实际的类(例如CMemCache, CDbCache ) 。否则,将返回空当访问此元件。clientScript: CClientScript -管理客户端脚本(javascripts and

    8、 CSS)。coreMessages: CPhpMessageSource -提供翻译Yii框架使用的核心消息。db: CDbConnection - 提供数据库连接。请注意,你必须配置它的connectionString属性才能使用此元件。errorHandler: CErrorHandler - 处理没有捕获的PHP错误和例外。format: CFormatter - 为显示目的格式化数据值。已自版本 1.1.0 可用。messages: CPhpMessageSource - 提供翻译Yii应用程序使用的消息。request: CHttpRequest - 提供和用户请求相关的信息。se

    9、curityManager: CSecurityManager -提供安全相关的服务,例如散列(hashing), 加密(encryption)。session: CHttpSession - 提供会话(session)相关功能。statePersister: CStatePersister -提供全局持久方法(global state persistence method)。urlManager: CUrlManager - 提供网址解析和某些函数。user: CWebUser - 代表当前用户的身份信息。themeManager: CThemeManager - 管理主题(themes)。

    10、应用的生命周期当处理一个用户请求时,一个应用程序将经历如下生命周期:使用 CApplication:preinit() 预初始化应用。建立类自动加载器和错误处理;注册核心应用组件;载入应用配置;用CApplication:init()初始化应用程序。注册应用行为;载入静态应用组件;触发onBeginRequest事件;处理用户请求:解析用户请求;创建控制器;执行控制器;触发onEndRequest事件;PHP开发框架Yii教程(2)控制器CController控制器是 CController 或者其子类的实例。控制器在用户请求应用时创建。控制器执行所请求的action,action通常加载必要

    11、的模型并渲染恰当的视图。最简单的action仅仅是一个控制器类方法,此方法的名字以action开始。控制器有默认的action。用户请求不能指定哪一个action执行时,将执行默认的action。缺省情况下,默认的action名为index。可以通过设置CController:defaultAction改变默认的action。下边是最小的控制器类。因此控制器未定义任何action,请求时会抛出异常。class SiteController extends CController路由控制器和actions通过ID进行标识的。控制器ID的格式: path/to/xyz对应的类文件protected

    12、/controllers/path/to/XyzController.php, 相应的 xyz应该用实际的控制器名替换 (例如 post 对应 protected/controllers/PostController.php). Action ID与 是没有action前缀的action方法名字。例如,控制器类包含一个 actionEdit 方法, 对应的 action ID就是 edit。 注意: 在1.0.3版本之前, 控制器ID的格式是 path.to.xyz 而不是 path/to/xyz。用户请求一个特定的 controller 和 action 用术语即为 路由. 路由一个 con

    13、troller ID 和一个 action ID 连结而成,二者中间以斜线分隔. 例如, route post/edit 引用的是 PostController 和它的 edit action. 默认情况下, URL http:/hostname/index.php?r=post/edit 将请求此 controller 和 action. 注意: 默认地情况下,路由是大小写敏感的. 从版本 1.0.1 开始, 可以让其大小写不敏感,通过在应用配置中设置 CUrlManager:caseSensitive 为 false . 当在大小写不敏感模式下, 确保你遵照约定:包含 controller

    14、 类文件的目录是小写的, controller map 和 action map 都使用小写的 keys.自版本 1.0.3, 一个应用可以包含 模块(module). 一个 module 中的 controller 的 route 格式是 moduleID/controllerID/actionID. 更多细节, 查阅 section about modules.控制器实例化CWebApplication在处理一个新请求时,实例化一个控制器。程序通过控制器的ID,并按如下规则确定控制器类及控制器类所在位置 若设置了 CWebApplication:catchAllRequest, 一个基于此

    15、属性的 controller 将被创建, 同时用户指定的 controller ID 将被忽略. 这主要用来将 application 置于维护模式, 并显示一个静态的提醒页面. 若此 ID 出现在 CWebApplication:controllerMap, 对应的 controller 配置将被用来创建此 controller 实例. 若此 ID 的格式是 path/to/xyz, controller 类名字被假定为 XyzController 而相应的类文件是protected/controllers/path/to/XyzController.php. 例如, 一个 controll

    16、er ID admin/user 将被解析为 controller 类 UserController ,class 文件是 protected/controllers/admin/UserController.php. 若此 class 文件不存在, 会触发一个 404 CHttpException一旦 使用了modules (自版本 1.0.3 可用), 上面的过程有少许不同. 特别的, application 将检查此 ID 是否引用的是一个 module 中的 controller, 如果是, 此 module 实例首先被创建,然后创建 controller 实例.Action如之前所述

    17、, 一个 action 可以被定义为一个方法,其名字以单词 action 开头. 一个更高级的方式是定义一个 action 类,当它被请求的时候让 controller 实例化它. 这将允许 action 可被重用,因此更加具有可重用性.要定义一个新 action 类, 这样做:class UpdateAction extends CAction public function run() / place the action logic here 要让 controller 知道此 action 的存在, 我们重写 controller 类的actions() 方法:class PostCo

    18、ntroller extends CController public function actions() return array( edit=application.controllers.post.UpdateAction, ); 如上所示,使用路径别名application.controllers.post.UpdateAction 确定action类文件为protected/controllers/post/UpdateAction.php.编写基于类的(class-based) action, 我们可以以模块化的方式组织程序。例如,可以使用下边的目录结构组织控制器代码:prote

    19、cted/ controllers/ PostController.php UserController.php post/ CreateAction.php ReadAction.php UpdateAction.php user/ CreateAction.php ListAction.php ProfileAction.php UpdateAction.php过滤器(Filter)Filter 是一个代码片段,被配置用来在一个控制器的动作执行之前/后执行. 例如, an access control filter 可被执行以确保在执行请求的 action 之前已经过验证; 一个 perf

    20、ormance filter 可被用来衡量此 action 执行花费的时间.一个 action 可有多个 filter. filter 以出现在 filter 列表中的顺序来执行.一个 filter 可以阻止当前 action 及剩余未执行的 filter 的执行.一个 filter 可被定义为一个 controller 类的方法. 此方法的名字必须以 filter 开始. 例如,方法 filterAccessControl 的存在定义了一个名为 accessControl 的 filter. 此filter 方法必须如下:public function filterAccessControl

    21、($filterChain) / call $filterChain-run() to continue filtering and action execution$filterChain 是 CFilterChain 的一个实例, CFilterChain 代表了与被请求的 action 相关的 filter 列表. 在此 filter 方法内部, 我们可以调用 $filterChain-run() 以继续 执行其他过滤器以及 action 的执行.一个 filter 也可以是 CFilter 或其子类的一个实例. 下面的代码定义了一个新的 filter 类:class Performan

    22、ceFilter extends CFilter protected function preFilter($filterChain) / logic being applied before the action is executed return true; / false if the action should not be executed protected function postFilter($filterChain) / logic being applied after the action is executed 要应用 filter 到 action, 我们需要重写

    23、CController:filters() 方法. 此方法应当返回一个 filter 配置数组. 例如,class PostController extends CController . public function filters() return array( postOnly + edit, create, array( application.filters.PerformanceFilter - edit, create, unit=second, ), ); 上面的代码指定了两个 filter: postOnly 和 PerformanceFilter. postOnly fi

    24、lter 是基于方法的 (对应的 filter 方法已被定义在 CController 中); 而 PerformanceFilter filter 是基于对象的(object-based). 路径别名 application.filters.PerformanceFilter 指定 filter 类文件是protected/filters/PerformanceFilter. 我们使用一个数组来配置PerformanceFilter 以便它可被用来初始化此 filter 对象的属性值. 在这里 PerformanceFilter 的 unit 属性被将初始化为 second.使用+和-操作符

    25、, 我么可以指定哪个 action 此 filter 应当和不应当被应用. 在上面的例子中, postOnly 被应用到 edit 和 create action, 而 PerformanceFilter 被应用到所有的 actions 除了 edit和 create. 若+或-均未出现在 filter 配置中, 此 filter 将被用到所有 action .PHP开发框架Yii教程(3)模型CModel模型是 CModel 或其子类的实例。模型用于保持数据以及和数据相关的业务规则。模型描述了一个单独的数据对象。它可以是数据表中的一行数据或者用户输入的一个表单。数据中的各个字段都描述了模型的

    26、一个属性。这些属性都有一个标签,都可以被一套可靠的规则验证。Yii实现了表单模型和 active record 两种模型,它们都继承自基类 CModel。表单模型是CFormModel的实例。表单模型用于保存通过收集用户输入得来的数据。这样的数据通常被收集,使用,然后被抛弃。例如,在一个登录页面 上,我们可以使用一个表单模型来描述诸如用户名,密码这样的由最终用户提供的信息。若想了解更多,请参阅 Working with Form。Active Record (AR) 是一种面向对象风格的,用于抽象数据库访问的设计模式。任何一个 AR 对象都是 CActiveRecord 或其子类的实例,它描述

    27、的数据表中的单独一行数据。这行数据中的字段被描述成 AR 对象的一个属性。关于 AR 的更多信息可以在 Active Record 中找到。PHP开发框架Yii教程(4)视图View视图是一个包含了主要的用户交互元素的PHP脚本。他可以包含PHP语句,但是我们建议这些语句不要去改变数据模型,且最好能够保持其单纯性(单纯作为视图)!为了实现逻辑和界面分离,大部分的逻辑应该被放置于控制器或模型里,而不是视图里。一个 view 有一个当渲染(render)时用来识别 view 脚本的名字。view 名字和它的 view 脚本文件的名字相同。例如:视图 edit 的名称出自一个名为 edit.php

    28、的脚本文件。通过 CController:render() 调用视图的名称可以渲染一个视图。这个方法将在 protected/views/ControllerID 目录下寻找对应的视图文件。在视图脚本内部,我们可以通过 $this 来访问控制器实例.我们可以在视图里以 $this-propertyName 的方式获取(pull)控制器的任何属性.我们也可以用以下 push 的方式传递数据到视图里:$this-render(edit, array( var1=$value1, var2=$value2,);在以上的方式中,render() 方法将提取数组的第二个参数到变量里。其结果是,在视图脚本

    29、里,我们可以直接访问变量 $var1 和 $var2。布局布局是一种特殊的视图文件,用来修饰视图。它通常包含了用户交互过程中常用到的一部分视图。例如:视图可以包含header和footer的部分,然后把内容嵌入其间。.而 $content 则储存了内容视图的渲染结果。当使用 render() 时,布局被隐含的应用。视图脚本 protected/views/layouts/main.php 是默认的布局文件。它可以通过改变 CWebApplication:layout 或者 CController:layout 来实现定制。要渲染(render)一个 view 而不应用任何布局,换用 rende

    30、rPartial()。部件部件 是 CWidget 或其子类的实例。它是一个主要用于呈现目的的组件。部件通常内嵌于一个视图来产生一些复杂却独立的用户界面。例如,一个日历部件可以用于渲染一个复杂的日历界面。部件可以在用户界面上更好的实现重用。要使用一个部件在一个 view 脚本中这样做:beginWidget(path.to.WidgetClass); ?.body content that may be captured by the widget.endWidget(); ?或者widget(path.to.WidgetClass); ?后者用于不需要任何 body 内容的 widget。widget可以通过配置来定制它的行为。这些是通过调用 CBaseControl


    注意事项

    本文(PHP开发框架Yii全方位教程1应用 Yiiapp.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开