`
zhouwei064
  • 浏览: 26473 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Yii技术框架学习之路(一)

    博客分类:
  • PHP
阅读更多

学习PHP的Yii框架的权威指南

最近工作有用到别人写好的bugfree问题管理系统,研究了一番,发现用到了Yii框架,貌似要好好研究下Yii框架,才能对bugfree系统进行修改,定制出自己的功能。

http://www.yiiframework.com/doc/guide/1.1/zh_cn/

 

Yii 使用了 Web 开发中广泛采用的模型-视图-控制器(MVC)设计模式。 MVC的目标是将业务逻辑从用户界面的考虑中分离,这样开发者就可以更容易地改变每一部分而不会影响其他。 在 MVC中,模型代表信息(数据)和业务规则;视图包含了用户界面元素,例如文本,表单等; 控制器则管理模型和视图中的通信。

除了 MVC, Yii 还引入了一个前端控制器,叫做 应用,它表示请求处理的执行上下文。 应用处理用户的请求并将其分派到一个合适的控制器以继续处理。

下面的示意图展示了 Yii 应用的静态结构:

Static structure of Yii application

 

下图展示了一个 Yii 应用在处理用户请求时典型的工作流。

A typical workflow of Yii application

  1. 用户发出了访问 URL http://www.example.com/index.php?r=post/show&id=1 的请求, Web 服务器通过执行入口脚本 index.php 处理此请求。
  2. 入口脚本创建了一个 应用 实例并执行。
  3. 应用从一个叫做 request 的 应用组件 中获得了用户请求的详细信息。
  4. 应用在一个名叫 urlManager 的应用组件的帮助下,决定请求的 控制器 和 动作 。在这个例子中,控制器是post,它代表 PostController 类; 动作是 show ,其实际含义由控制器决定。
  5. 应用创建了一个所请求控制器的实例以进一步处理用户请求。控制器决定了动作 show 指向控制器类中的一个名为 actionShow 的方法。然后它创建并持行了与动作关联的过滤器(例如访问控制,基准测试)。 如果过滤器允许,动作将被执行。
  6. 动作从数据库中读取一个 ID 为 1 的 Post 模型
  7. 动作通过 Post 模型渲染一个名为 show 的 视图
  8. 视图读取并显示 Post 模型的属性。
  9. 视图执行一些 小物件
  10. 视图的渲染结果被插入一个 布局
  11. 动作完成视图渲染并将其呈现给用户。

对2需要进一步阐释:应用由 入口脚本 创建为一个单例对象。这个应用单例对象可以在任何地方通过 Yii::app() 访问。

 个人分析认为3、7、9是比较让人忽略的重点,具体包括request应用组件、一个名为show的视图、视图执行了一些小物件。

应用的生命周期 

当处理用户请求时,应用将经历如下声明周期:

  1. 通过 CApplication::preinit() 预初始化应用;

  2. 设置类的自动装载器和错误处理;

  3. 注册核心类组件;

  4. 加载应用配置;

  5. 通过 CApplication::init() 初始化应用:

    • 注册应用行为;
    • 载入静态应用组件;
  6. 触发 onBeginRequest 事件;

  7. 处理用户请求:

    • 解析用户请求;
    • 创建控制器;
    • 运行控制器;
  8. 触发 onEndRequest 事件。

分享到:
评论

相关推荐

    《Yii框架深度剖析》配套代码

    《Yii框架深度剖析》配套代码 本书不是简单地介绍如何使用 Yii 框架,而是站在框架设计的高度,从源代码级别深 度剖析。... 充分了解了这部分知识后,读者对 Yii 框架也有了初步认识,然后正式进入 Yii 框架的学习。

    2016最全Yii框架

    教程名称: 2016最全Yii框架 YII是目前比较火的框架,框架里面使用了最新的技术和设计,可以说学习了YII就学习了最新的php技术,本课程主要学习XSS、CSRF、SQL注入、文件上传漏洞等攻击方式,以及YII框架对它们的...

    Yii中文教程

    权威的yii框架中文版开发文档,希望能够为您的yii框架学习带来帮助,让你的技术更上一层楼! zhihuizhan.com

    深入理解Yii2.0-20141005版

    这是一本干货。主要讲解Yii2.0及所代表的最新... 学习完这里面的全部内容,你得到的,不仅仅是Yii怎么使用的实操技巧,还将了解其实现的技术原理和内幕, 更为重要的,将是Web开发中最为流行和成熟的设计模式和开发思路。

    Yii2框架引用bootstrap中日期插件yii2-date-picker的方法

    最近在学习yii2 框架,发现框架很强大,而且结合了时下许多新的技术在里面。 简单记录一下yii2-date-picker插件的使用方法: 首先先了解一下github中的相关资源:...

    PHP框架Laravel学习心得体会

    自从接触PHP以来一直使用Yii,感觉Yii实现功能比较简单,是一个很不错的框架。最近由于工作的原因开始研究Laravel5,不得不说我在第一步安装就被坑着了,下面就是我痛苦的学习成果。Laravel对我来说完全是新东西,...

    mtcms 1.0.zip

    mtcms是一款开源的中小型企业cms网站内容管理系统,基于yiiframework框架构建,已成功制作运营几十个企业网站案例,现将开源出来供广大yii学习爱好者分享交流。 mtcms制作的初衷是为了yii的学习,和满足中小企业...

    基于PHP+Yii2+Mysql+Apache的图书管理系统.zip

    基于PHP、MySQL等技术构建的web系统,框架,PHP学习,课程设计作业,可用于毕业设计,源码项目,可直接运行,实测! 基于PHP、MySQL等技术构建的web系统,框架,PHP学习,课程设计作业,可用于毕业设计,源码项目,...

    PHP框架性能测试报告

    作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。 用ThinkPHP的话,招聘一个刚从培训机构出来的开发者就可以上手了,但是性能和后期代码解耦是个让人头疼的事情。不过很多第三方...

    这是网站版的电商系统,是Shop-for-iOS的服务端代码.zip

    注意:如果用PHP开发,请使用 Shop-for-PHP-Yii2 PHP(全称:PHP: Hypertext Preprocessor)是一种广泛应用于Web开发的开源脚本语言,以其易学易用、高效灵活的特性深受广大开发者喜爱。诞生于1995年,由Rasmus ...

    xoa:小团队工作用的OA

    通过Yii框架的代码演示了一些设计模式和业务逻辑的封装方法 通过自动化构造数据和其它处理功能等演示了在软件工程中这些以前他们手动处理问题是如何被自动化解决的 通过单元测试的代码示例了我是如何对软件进行测试...

    matlab代码做游戏-made-in-greece:Greece在希腊进行的整洁项目清单

    matlab代码做游戏希腊制造 在希腊进行的整洁项目清单 内容 JavaScript :glowing_star: 名称 描述 :globe_showing_Europe-Africa: 2553 / 高度可定制的自定义滚动条jQuery插件,具有垂直/...它也是人们学习各种Web技术

    rendeslms:RendesLMS - 符合锡罐 API 的 LMS

    会合 使用 Tin Can API 规范构建学习管理系统。 • 设计和开发项目架构 • 开发 LMS 模块,例如课程、测验、学生等 • 实施 Tin Can API 标准 • ... Yii 框架 MySQL 学说 2 ORM 自动化测试: PHP单元 SeleniumIDE

    craft:Craft CMS的Composer入门项目

    一个强大的框架。 一个活跃,充满活力的。 您可以在了解有关它的更多信息,并可以在上找到文档。 技术规格 Craft是一个自托管PHP应用程序。 它可以连接到MySQL和PostgreSQL进行内容存储。 有关更多详细信息,请...

Global site tag (gtag.js) - Google Analytics