1、Yii框架简介框架简介主要内容Yii框架的起源一个浏览器请求的处理过程组件过滤器模型层视图层命令行程序2Yii框架的起源美籍华人“qiang”于2019年1月开始开发YII框架(他原来是Prado框架的核心开发成员之一,维护该框架超过3年),YII框架的设计思想主要来源于(Prado,Ruby on Rails,jQuery,Symfony,Joomla)yiiframework/about/Yii 是一个基于组件、用于开发大型 Web 应用的高性能 PHP 框架。它将 Web 编程中的可重用性发挥到极致,能够显著加速开发进程。Yii(读作“易”)代表简单(easy)、高效(efficient
2、)、可扩展(extensible)。3支持的特性phpframeworks/4性能yiiframework/performance/5处理流程yiiframework/doc/guide/1.1/zh_cn/basics.mvc#sec-26创建一个helloworld1、下载代码(yiiframework/download/)2、使用命令行工具创建项目3、创建控制类与actionyiiframework/doc/guide/1.1/zh_cn/quickstart.first-app-yiic7yiic.bat help webappyiic.bat webapp E:codeYiitrun
3、khelloword yiic.bat shell E:codeYiitrunkhelloworldindex.php help controller post log cache db update detail add list控制类Action FE同学可能对服务器端的技术与运行模式不太了解,其实一个网站是由若干个控制类组成(这次项目使用17个控制类),每个控制类又有若干个action成员函数,用户的一个请求(不管是不管是get/post/ajax)都是有一个action成员函数来处理,生成浏览器需要的html/json等每个控制类有一个ControllerId:site,my,XX每个
4、Action有一个ActionId:index,login,collectdesc8url路由组件1、通过用户输入的url找到处理这个请求的ControllerId和ActionId2、解析出获得url中的get产生yiiframework/doc/api/1.1/CUrlManager9 URL*浏览器请求路由组件UrlManagerApp类PostControlleractionLogactionDetailPostControlleractionLogactionDetail日志组件Db组件Cache组件XXControlleractionYYactionZZ权限组件XX组件1、创建We
5、bApplication2、通过“路由组件”获得ControllerId和ActionId3、创建“控制器”4、运作Action方法11日志路由组件 错误级别错误级别日志类别日志类别Error错误级别错误级别Warning警告级别警告级别Info基本操作基本操作Trace调试级别调试级别applicationextensions.ucextensions.beidou1、记录一条日志,需要设置这2个维度的参数Yii:log(悲剧,用户中心 挂了啊,CLogger:LEVEL_ERROR,extensions.uc);2、通过“日志路由组件”可以过滤出某些错误级别、某些类别的日志,见log的ro
6、utes配置12日志路由组件工作原理日志路由组件工作原理观察者模式观察者模式13其它常用组件Cache组件缓存作用Db组件数据库查询Auth认证组件基于角色的权限验证组件特点1、按需创建:如果一个组件在本次用户请求中、按需创建:如果一个组件在本次用户请求中没有没有被使用,它根被使用,它根本不被创建。本不被创建。2、单件模式:如果一个组件在多个地方使用,那么只有第一次使、单件模式:如果一个组件在多个地方使用,那么只有第一次使用的时候需要创建,以后每次使用,都是使用同一个组件对象用的时候需要创建,以后每次使用,都是使用同一个组件对象3、配置简单配置简单:通过修改通过修改app应用的应用的compo
7、nents配置项可以很方配置项可以很方便的对组件进行添加、删除和修改便的对组件进行添加、删除和修改14过滤器Action1、过滤器是控制器的一个成员函数,以filter打头,比如function filterSpend(),那么这个过滤器的名字就是spend2、可被配置在控制器动作执行之前或之后执行3、一个过滤器作用于多个Action,一个Action可以配置多个过滤器,配置很方便15过滤器工作模型actionCachefilterSpendfilterAjax过滤器用途1、统计:统计各个action每天被访问的次数,统计部分action的耗时2、访问控制:指定某些action的必须是Ajax
8、访问,指定某些action访问需要的权限或者角色,如上是本次项目的权限控制配置16模型层ORM 使用脚本创建模型层代码 cd E:codeYiitrunkhelloworldprotected yiic.bat shell E:codeYiitrunkhelloworldindex.php model*17ORM使用的是ActiveRecord技术即一张表对应一个对象,基本不需要些sql127.0.0.1/helloworld/index.php/post/add表之间的关联(1:1,1:n,n:1,n:m)通过relation来申明127.0.0.1/helloworld/index.php
9、/post/list视图层视图层视图层就是生成浏览器需要的html代码(中间可能包含js和css)Yii的将试图的生成分成3步,比如:127.0.0.1/demos/目前使用模板引擎smarty,对于公共的页面片断使用include语法18小物件在windows(MFC,Delphi,游戏)开发过程中,有很多小控件(下拉菜单/按钮/日历/人物)可以使用,不需要从头开发。一个key=value的数字Array(date=2019-11-2,weather=多云city=北京skin=red/grey)日历widget日历控件的html:XXXX需要a.js,b.js需要a.css,b.css输入
10、输出19小物件(Cwidget)的设计思想与其类似,它将页面看成是有多个可以复用的控件组成,从而提高了页面控件的复用性和可维护性。代价:代价:a)需要需要Fe会会php,基本的,基本的php语法、类的使用语法、类的使用 b)需要需要rd会一些简单的会一些简单的js和和html 客户端脚本管理组件客户端脚本管理组件(Yii:app()-clientScript)的功能:的功能:1)将将js,css插入到固定的位置插入到固定的位置(HEAD/BEGIN/END/LOAD/READY)2)修改这个组件的配置,可以对修改这个组件的配置,可以对js/css应用的路径进行替换或者合并,对外部透明,应用的路
11、径进行替换或者合并,对外部透明,比如开发的使用使用比如开发的使用使用home_dev.js,真正上线的时候使用,真正上线的时候使用home.js3)修改这个组件的配置,可以对修改这个组件的配置,可以对js/css进行合并和进行版本控制进行合并和进行版本控制20命令行 创建一个TotalCommand继承自CConsoleCommand 配置console.php中需要使用的组件 命令行程序创建的“app应用”是CConsoleApplication,web访问创建的应用时CWebApplication,其实“应用”时一个模板的概念,一个模板有一个组件池,可以配置这个模板需要的组件21cd E:codeYiitrunkhelloworldprotectedyiic.bat哈哈,所有的命令都有,系统的也有,系统其实也是写了一个XXCommandyiic.bat total useryiic.bat total postyiic.bat total commentYii作者推荐书籍作者推荐书籍(yiiframework/tutorials/)大概整理了一下,下载地址为:gaojie360/yii_book.rar22谢谢大家谢谢大家!23