A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 爱编码的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具有高度的可重用性和可扩展性,是纯粹的面向对象






评分

参与人数 1黑马币 +5 收起 理由
绮丽 + 5 神马都是浮云

查看全部评分

7 个回复

倒序浏览
回复 使用道具 举报

被你发现了
回复 使用道具 举报

这个头像很抢眼的
回复 使用道具 举报
沈唁 发表于 2017-9-3 20:39
这个头像很抢眼的

这都被你发现了,很犀利嘛
回复 使用道具 举报
爱编码的J 发表于 2017-9-3 21:11
这都被你发现了,很犀利嘛

你是大佬啊
回复 使用道具 举报
666666666666666
回复 使用道具 举报
很66啊  雪姐姐
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马