本帖最后由 爱编码的J 于 2017-9-3 21:12 编辑
前言:因为目前市面上的PHP框架较多,所以楼主打算整理一些主流框架的介绍,用于给大家学习交流。在接下来的一段时间内,会持续性的为大家奉上相应的框架介绍。
上次主要为大家介绍了TP3.X,以及TP3.X与TP5的一些区别,本次主要为大家介绍下目前市面上的另外一个主流框架YII2.0。
二、PHP中常见的框架之YII
YII是一个基于组件的高性能PHP框架,用于开发大型Web应用。YII采用严格的OOP编写,并有着完善的库引用以及全面的教程。事实上,YII是最有效率的PHP框架之一。
YII是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 YIIc 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发
目前市面上用的最多的YII版本是2.0,当然也有极少数的公司使用的是1.0的版本
① 入口文件
入口文件内容:一般格式如下:
$Yii =dirname(__FILE__).'/../../framework/Yii.php'; //Yii 框架位置
$config=dirname(__FILE__).'/protected/config/main.php'; //当前应用程序的主配置文件位置
②控制器
设置默认控制器有两种方法
1、在/vendor/yiisoft/yii2/web/Application.PHP中:public $defaultRoute = 'site';
可以把这个默认改了,但是修改框架源码不是很好最好是在配置文件中扩展
2、可以在 frontend/config/mian.php return[]下添加一行:'defaultRoute' =>'index', 这样默认控制器就改好了
③模型
yii的模型有Model和ActiveRecord两种:
1、Model类用来处理基本的业务逻辑,没有数据库相关方法
2、如果要操作同名数据表,就去继承ActiveRecord类。在models文件夹中的Operation.class里Operation类来继承yii\db\ActiveRecord来操作Operation表
3、如果要操作其他表,也可以重写public $tableName属性来设置,或改写其tableName方法(注意是静态方法):public static function tableName(){return 'tableName'}
④请求流程
用户发送请求给入口脚本,入口脚本加载配置,运行application,application会创建一个request组件去处理这次用户请求,Request组件会去路由里面查找用户想要请求的那个Controller,找到Controller后实例化它,调用对应的action执行操作,action会调用对应model层的函数进行数据处理,处理完成之后返回给对应的action,action会将数据格式化或者不格式化渲染View,为其提供填充所需要的数据,渲染完成的结果会返回给response组件发送给用户浏览器
⑤响应流程
当应用完成处理一个请求后, 会生成一个yii\web\Response响应对象并发送给终端用户。响应对象包含的信息有HTTP状态码,HTTP头和主体内容等, 网页应用开发的最终目的本质上就是根据不同的请求构建这些响应对象。在大多是情况下主要处理继承自 yii\web\Response 的 response 应用组件, 尽管如此,Yii也允许你创建你自己的响应对象并发送给终端用户
⑥Cookie调用流程
Yii2.0的Cookies不同于常规的PHP的Cookie设置,YII2.0Cookies使用Cookie类自定义名称、值、过期时间;然后将设置好的cookie配置项装载到CookieCollection中。然后服务器端处理完客户端提交的数据后返回触发Yii::$app->response中的事件;将调用Yii::$app->response->send()方法
⑦ Session调用流程
在Yii框架中,不需要像标准PHP代码那样使用session_start(),Yii 框架中,autoStart属性缺省被设置为true,所以虽然没有使用session_start(),但仍然可以使用$_SESSION全局变量,但最好使用Yii框架封装的Yii::app->session: 设置session变量:Yii::app()->session['var']='value'; 使用session变量: echo Yii::app()->session['var']; 移除session变量:unset(Yii::app()->session['var']); 其他方式配置session调用,可以自行思考
YII特性总结
1) 多种缓存机制,并支持缓存依赖。按需加载/延迟加载
2) 支持多模块多模版。
3) 相对较完善的库支持和第三方类库的导入。Yii还支持PHP的命名空间和自定义autoload方法
4) 工具支持yiic和gii。gii非常好用的建模块、控制器(动作)、CURD操作等功 能,可以减少开发周期。
5) 全面的事件行为机制。
6) Yii容易学习和使用,开发速度快
7) Yii有着丰富的功能,从MVC、DAO/ActiveRecord、widgets、caching、等级式RBAC、Web服务到主题化,YII提供了今日Web 2.0应用开发所需要的几乎一切功能。
8) Yii具有高度的可重用性和可扩展性,是纯粹的面向对象
|