前 言php
JRedugit
程序猿是一种慵懒的生物!能少敲一行代码,绝对不会多敲一个字符!因此,愈来愈多的开发框架应运而生,在帮助咱们完成功能的同时,极大程度上也帮咱们节省了人力物力,并且也提升了系统的安全性能。github
而PHP,号称“世界上最好用的编程语言”!天然也拥有一大群的“脑残粉”,让诸多的PHP程序猿投入到框架的开发过程当中。从众所周知的ThinkPHP、PHPCMS,到时下流行的YII、Symfony、Laravel、Workerman、CodeIgniter等众多的框架逐渐成为你们不可或缺的工具。而这其中,YII框架凭借其优雅的语法、安全的性能、可重用的代码、MVC的开发模式等诸多亮点,被愈来愈多的开发者所采纳使用。web
II框架是由美籍华人薛强于2008年开始研发,是一个适用于开发 Web2.0 应用程序的高性能 PHP 框架。通过1年多的研发,与2008年12月3日发布YII 1.0版本,发布后深受广大开发者所喜好。编程
而中国是 Yii 全球第三大市场,,小米等企业在开发 PHP 时首选 Yii 框架。目前,YII的最新版本是YII 2.0.12,在 PHP 5.4.0 版本以上彻底重写了 Yii,而且彻底兼容 PHP 7.x。它的目的是成为一个最早进的新一代的PHP开发框架。缓存
下载地址可从GitHub获取:https://github.com/yiisoft/yii2/releases/download/2.0.12/yii-basic-app-2.0.12.tgz (小瑞实测,下载缓慢! 若是须要能够评论留言 哦~)安全
YII框架下载后,直接解压放到网站的根目录便可。解压后目录结构以下:yii2
下载后,能够首先访问根目录中的requirements.php文件,这个文件用于检测系统是否支持YII框架。注意,YII 2.0要求最低的PHP版本必须是PHP5.4以上。不然验证不经过。cookie
验证经过后,能够访问框架的入口脚本文件:web/index.php ,这是咱们惟一能够访问的一个文件。也是咱们网站的主页面。session
注意:访问前必须配置CookieValidationKey 访问config/web.php 修改” cookieValidationKey”=>””,修改成任意字符串便可,不然后续功能将会受限不能使用。
YII系统的访问从入口脚本文件开始,通过默认的控制器,由控制器决定读取哪一个模型,加载哪一个模块或应用组件,显示哪一个视图。 也就是说,控制器的代码将是咱们操做的核心部分。
YII应用的结构示意图以下,你们能够适当参考:
YII应用的静态结构
位置:controllers/ 下能够新建控制器
① 新建的控制器必须以Controller结尾,例如HelloControler.php
② 控制器的类名与文件同名,必须放在命名空间中 app\controllers
③ 控制器必须继承Controller类,须要use yii\web\Controller
④ 控制器中必须包含操做方法,操做需用action开头,例如 actionIndex()
控制器访问方式 http://localhost/web/index.php?r=hello/index
R是route的缩写,格式为r=控制器名/操做名
Url中能够在操做名后使用&传递其余参数 例如 ….index.php?r=hello/index&id=3
在控制器中,可使用request请求组件,读取传递到控制器的值;
使用方式: \YII::app->request(); 拿到request请求组件,注意YII是全局类须要加\
拿到request请求组件使用get()/post()/isGet/isPost等方法和属性。
使用\YII::app->response(); 拿到响应组件
使用\YI::app->session获取session组件
使用\Yii::app->response->cookies; 拿到Cookie组件
Cookie数据会使用上述提到的config/web.php 中的” cookieValidationKey”进行加密
视图文件须要创建在views文件夹中,并包含在与控制器同名的文件夹名字中:
控制器中加载视图文件:
$this->renderPartial(“视图文件名”); 不会加载布局文件;
$this->render(“视图文件名”); 会加载默认的布局文件;
控制器中传递数据:
视图中接收数据:
布局文件建立在: views/layouts/文件夹下
控制器写法:
布局文件载入:
在index视图中载入about视图,并向about视图传参:
在about视图中接收参数:
视图中,定义数据块:
在config中修改db.php文件修改数据块配置
在models文件夹下,创建数据模型
① 活动记录文件必须在命名空间app\models下;
② 必须继承ActiveRecord类,在YII\db\ActiveRecord命名空间下;
③ 创建后,可操做与活动记录类同名的表,也可使用静态tableName方法返回表名
Tset活动记录类编写rules方法
首先,新建两个表的数据模型,即活动记录;
一对多关系关联(例如,根据顾客名字查询订单):
还可使用::className()替换到完整类名
为了提升性能,减小Controller与Model的耦合,能够将上述方封装到Model中:
在控制器中,调用方法或者属性便可:
注:使用属性调用时,需将Model中的方法最后的->all()去掉,由于当调用一个不存在属性时,会默认调用__Get()魔术方法,YII框架在这个魔术方法中为咱们自动调用了->all()
一对一关系关联(例如,根据订单中的顾客ID查询顾客姓名):
Model中编写方法:
控制器中调用:
使用方法调用需补齐->one();
使用属性调用,会自动补齐
关联结果缓存:
解释:第一次调用方法读取数据,会自动执行SQL语句,之后再调用就会自动缓存结果不会再执行SQL,可使用unset()函数,让执行时继续从新调用最新数据;
关联屡次查询
解释:上述代码会执行一次循环便执行一遍SQL,最后查询N屡次;
解释:改写后执行第一行代码,至关于执行两条SQL语句,在循环时不会再执行SQL,性能能够大大的优化