YII2 初来乍到 在 2013 年,2014 年 YII2 刚刚发布的年份,YII2 被大家追逐的原因大概是面向对象数据,包加载的扩展属性,自带 Gii 自动化生成工具,清爽的 View 界面和工具包...必须的模块和组件自动加载,其它组件和模块可以按需加载。...虽然组件和模块为扩展性提供了便利,引用它们使用的配置,会造成入口 index.php 自动加载的 main.php 文件复杂臃肿,难以维护和阅读。...YII2 入口文件及环境配置.png 根据组件分拆配置文件,实现组件和模块的按需加载。...当然会有一些单元测试组件,比如 YII2 下的 Codeception,PHPUnit 进行数据 Mock。
说干咱就干,老沙灰常高兴的开始yii2程序的restful配置过程。...alt yii2框架内置是支持restful规范的,按照yii2的规则做我们可以轻松实现比如数据表数据的获取、插入、更新、删除等基础操作以及登录验证等功能。...这里要说明的参数是pluralize,在restful使用上一直存在两种观点,就是对于资源在url上的表现应该是单数还是复数问题,yii2默认是复数形式,如果你想使用单数可以将pluralize设置为false...album控制器的actionIndex,以此类推yii2提供了很多个内置的action识别,具体见下图 alt 当然具体如何实现的你可以参考 yii\rest\UrlRule.php 类及yii2的...完事了 简单配置后,老沙搞定了服务器端的配置,接下来他计划使用小程序和yii2实现一个队相册列表的功能实现,下一篇告诉你。
Yii2 framework提供了一个Pjax widget帮助我们快速简洁的使用Pjax. 1. 引入Pjax <?php use yii\widgets\Pjax; ?...如果Pjax没有响应,超时之后页面将会重新加载。 Yii2 Pjax Examples Refresh 本例是一个简单的点击超链接来实现刷新时间,通过Pjax widget实现异步刷新。...控制器渲染和提供数据给页面 public function actionIndex() { $time = date('Y-m-d H:i:s', time()); return $this...禁用pushState 有时候我们需要禁用pushState,更新数据的同时,保持Url不变,在线示例Demo,一个简单的投票示例代码,Pjax配置参数enablePushState需设置为false...> 控制器中提供数据: public function actionGrid() { $models = [ ['name' => 123] ]; $dataProvider
加载过滤器 ? 过滤器加载.png 需要注意的问题: ==定义过滤器内的beforeAction 和 afterAction ,必须返回父类的方法。...//获取的是cookie的值 var_dump($getCookieObj->getValue('tel', '00000')); //获取的是对象 var_dump($getCookieObj->get...创建元素表单.png 在控制器中接收表单数据并绑定数据到表单模型 ?...中,不需要自己去写验证,直接在表单模型的 rules 中调用 captcha 验证就可以了 ['verifyCode','captcha'], 数据分页 Yii2也提供了类似于TP的数据分页类:...{ //获取页码,参数需和Pagination中配置的参数一致 $page=Yii::$app->request->get("page"); $page
比如看下面yii2的一个description。...这些类型都将是具体到某一个项目,而对应的项目将要提供一种能够安装该类型包的安装程序。...比如我们开发的yii2扩展,它的类型就是 yii2-extension,而yii2程序提供了一个逻辑进行该包的处理。...可以使用 --no-dev 参数来跳过 require-dev 字段中列出的包。 autoload PHP autoloader 的自动加载映射。...你可以用 classmap 生成支持支持自定义加载的不遵循 PSR-0/4 规范的类库。要配置它指向需要的目录,以便能够准确搜索到类文件。
extends Behavior { // 定义事件名 const EVENT_BEFORE_DEMO1 = 'beforeDemo1'; /** * [ 事件绑定处理程序...->ip, 'route' => $event->route, ]; Yii::info($log, 'demo1'); } } 定义数据格式类...description] */ public function actionIndex() { $event = new MyEvent(); // 传递参数...\SiteController.php:84 2020-08-05 14:43:47 [127.0.0.1][-][-][info][application] $_GET = [] Yii2 事件的使用就是这么简单...Yii::$app->trigger('定义事件名', 实例化event的类,可以传递参数,可以不传递) 以上就是对Yii2框架事件使用方法分享,各位大牛要是有更好的方法也请分享一下。
中文化 默认安装yii2时,程序的相关信息是英文的,第一步我们需要改成中文的,很简单。...,别说你的程序将来没有移动端,早早的选择一个支持emoji的数据库会避免我们下载第三方库去解决报错问题。...传送门 AR关联的循环要很小心 这个问题我之前也视频说过,就是惰性加载和即时加载的问题,比如下面的代码并不好 $customers = Customer::find()->limit(100)->all...使用迁移脚本 我说过了很多次,本篇还是要说一次,对于一个yii2程序的数据库部分请用migration来管理。 并且这些脚本应该一起放到到你的版本控制里,记住,迁移脚本一般包含两个部分。...开发完 程序开发完还需要对yii2程序进行一些配置,很多你一定已经会了。
关于CSRF,要从一个故事开始~ 老王丢钱事件 这个故事要从程序员老王丢了1万块钱说起,总之是进了小偷,找回无果。...CSRF攻击主要是发送修改数据请求。 CSRF防御对象 因此我们要保护的是所有能引起数据变化的客户端请求,比如新建、更新和删除。...就算是最新的浏览器此方法也不是绝对可用的,这涉及了用户的隐私,很多用户会设置浏览器不提供Referer,因此服务器在得不到Referer的情况下不能贸然的决绝服务,有可能这是一个合法请求。...针对于不同类型的请求一般方案是 GET 放到url中,比如http://url?...在CSRF这块,yii2框架采取了HTTP头部和参数token并行的方式,针对于每个请求,在beforeAction都会做一次判断,如下 // vendor/yiisoft/yii2/web/Controller.php
当服务器端进行了存储后要生成一个key,将其返给小程序,以后小程序凡是发起需要用户认证的请求,都带这个key用来判断用户身份,在yii2中,这个key就是我们restful中的access_token。...以上是关于小程序登录的前后台逻辑,如果你使用yii2类框架,很多都内置了,并不复杂。 但是这里还有几个问题 小程序端何时进行登录逻辑? 发起请求时access_token过期了如何处理?...var session = Session.get();// 获取access_token if (session) { wx.checkSession({ success: function...prepay_id后才能下发模板消息,似乎很受限制,但是我们可以建立一个formId的种子表,将尽可能多的用户和后台的行为都采用form表单提交的形式,并且获取formID,对,要变态的多,这样你的formId表数据起来了...让yii2能解析json的请求内容 默认情况下yii2并不能识别请求中的json格式,而我们小程序在发起请求时喜欢用它,因此我们要对yii2进行一下配置。
Yii2和ThinkPHP5缓存操作提供的公共方法对比 Yii2缓存提供的方法 get 获取缓存 set 设置缓存数据 exists 判断缓存是否存在 mset multiSet 方法别名,批量设置缓存...缓存提供的方法 get 获取缓存 set 设置缓存 inc 缓存数据自增 dec缓存数据自减 rm 删除缓存 clear 根据tag 删除缓存 pull 读取缓存并删除缓存 remember读取缓存,不存在则设置...tag 缓存分组加标签 has 判断缓存是否存在 Yii2 和ThinkPHP5 缓存操作对比 读写操作 ThinkPHP5 读写缓存文件都是通过file_get_contents和file_put_contents...Yii2读取缓存加共享锁LOCK_SH,写缓存加排它锁LOCK_EX保证读写数据完整。...两种框架都支持缓存可序列化数据。Yii2缓存操作支持自定义数据序列化方法,默认使用serialize方式。
我们做程序的时候,加密解密是绕不开的话题,使用yii2开发应用的时候,都内置了哪些有关加密解密(安全)方便的支持那?本文将为你揭晓。...这样我们就对数据进行了特殊的防止篡改标记,接下来是validateData上场了。 注意:hashData的第三个参数代表生成的哈希值是否为原始二进制格式....validateData 函数的第三个参数应该与使用 hashData() 生成数据时的值相同. 它指示数据中的散列值是否是二进制格式. 如果为false, 则表示散列值仅由小写十六进制数字组成....if($code == Yii::$app->request->get('code')){ } 上面的比较逻辑,两个字符串是从第一位开始逐一进行比较的,发现不同就立即返回 false,那么通过计算返回的速度就知道了大概是哪一位开始不同的...: hashData() 和 validateData(); 密码验证: generatePasswordHash() 和 validatePassword() 发布者:全栈程序员栈长,转载请注明出处:
Yii2底层分析 我是从入口处分析的。...ServiceLocator \yii\base\Component \yii\base\Object $this->setInstance($this);//module里会用到,为getInstance提供...这一句是指向\yii\base\Module public static function setInstance($instance)//module模块里会用到,为getInstance提供 {...表面看起来没有太多的意义,实则不然,yii2的大部分组件都是以Object为基类的, 所以init函数很重要,控制器、模型、模块module,自定义组件等都可以去实现init方法。...yii\base\Response类,在外部可以Yii::$app->get('response')、Yii::$app->getResponse()、Yii::$app->response 等等方式来加载
call_user_func_array: call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] ) 调用第一个参数所提供的用户自定义的函数...另外,call_user_func系列函数还可以传入在第一个参数里传入匿名参数,可以很方便的回调某些事件,这些特性在复杂的框架里应用也十分广泛,如yii2的事件机制里回调函数的使用就是基于此。...,请检查数据库配置信息!")...阶段: yii2里的数据表和model类属性之间的映射很酷(虽然被深坑过), 前面一直避开的模块(module,我可以想像得到把它也添加到URI时解析的麻烦)有时间考虑一下。...数据表和Model类的ActiveRecord映射 初次使用yii2的ActivceRecord类觉得好方便,只需要定义其字段同名属性再调用save方法就OK了(好神奇啊),它是怎么实现的呢,看了下源码
想要在Yii2这个PHP框架中很好的使用redis键值存储,那么首先就要推荐yii2-redis这个官方的Github库。...这个库能够很好的帮助我们在Yii2框架中使用redis,它提供缓存,Session以及ActiveRecord模式的支持。...配置redis 要正确的使用这个扩展,你必须在你的应用程序的配置文件内,配置Connection类,一般来说,配置文件是config\web.php。...localhost', 'port' => 6379, 'database' => 0, ], ] ]; 如此之后,你便能正常的在yii2...示例 简单使用 我们先来看一段最简单的使用redis的代码: $redis = Yii::$app->redis; $key = 'username'; if ($val = $redis->get($
今天看到一个在线答题小程序,跑起来看了看,总体效果是有的,接口采用了Yii2编写,但是没有做后台,若是你想二次开发,可以考虑考虑这个小程序。...实现功能 一、分类选择各个类型的题目 二、做题类型选择 三、单选题 四、错题记录 五、题目分享 六、得分计算 技术选型 一、Yii2提供接口 二、微信原生写法 不足的地方,没有后台,需要自己二次开发完善...,我想作者是关注到小程序的开发了,所以忽略了后台。...安装方法 一、Yii2需要将域名解析到web目录下 二、data目录下是数据库文件,选取最新的一个导入到数据库中。 三、小程序中对应的链接改成你的链接。 四、链接地址需要申请证书,配置https。...五、小程序不好的地方,是链接地址写死的,需要一个文件一个文件的修改。 演示图
yii2目前还处于beta版本,相关文档也一直在变化,如有疏漏,还请及时反馈 Yii2安装 两种安装方式,composer或者下载zip包 使用composer安装初始化yii2项目(推荐)...的框架源文件,然后根据自己的实际情况构建目录结构,进行开发 项目初始化完成以后,配置yii2的配置文件,配置文件一般放在app/config目录下,当然这个路径会根据个人习惯而不同] 我个人推荐的yii2...框架 web/ nginx/apache配置的webroot目录,提供外部访问 app/ app根目录 assets/...assets管理定义 commands/ 命令行工具(controller) config/ 应用程序配置 controllers/...注意一定要在配置文件里定义 vendorPath的路径 环境要求 PHP 5.4 以上 其他要求运行 php requirements.php监测 nginx虚拟机配置 使用此配置时,注意设定php.ini的一个参数值
我们看看在yii2中如何使用modal。 比如我们之前添加数据的时候,通常情况下会点击按钮跳转到添加页面,保存后再跳转到列表页。 现在我们希望点击添加按钮的时候,在当前页面弹窗添加数据,看具体实现。...Url::toRoute('create'); $js = <<<JS $(document).on('click', '#create', function () { $.get...有同学可能要说,这个页面没必要异步加载过来。确实,你也可以直接在页面上echo $this->renderAjax();,不过需要提醒的是,该操作记得修改表单提交的action哦。...modal", 同时设置 data-target="#identifier" 或 href="#identifier" 来指定要切换的特定的模态框(带有 id="identifier") 以上,我们仅仅是在yii2...思考两个问题 modal如何结合gridview进行使用 modal中如果使用的是表单,表单提交后如何对数据进行验证
测试框架版本说明 测试yii2版本 77103@DESKTOP-C2JB47R MINGW64 /e/dev/basic $ ....following commands are available: 配置文件 配置memcache,在web.php / main.php 中配置 'components' => [ //数据缓存到...$expire = 60000; yii::$app->cache->set($key, $value,$expire); $data =Yii::$app->cache->get...); $expire = 60000; yii::$app->cache->set($key, $value); $data =Yii::$app->cache->get...前根据文档配置好相应的参数,在使用memcache(非memcached)过程中会发现Yii::$app->cache->set('key','value');,当这句话没有设置有效时间为多少秒时,可以正常获取到缓存中键为
call_user_func_array: call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] ) 调用第一个参数所提供的用户自定义的函数...另外,call_user_func系列函数还可以传入在第一个参数里传入匿名参数,可以很方便的回调某些事件,这些特性在复杂的框架里应用也十分广泛,如yii2的事件机制里回调函数的使用就是基于此。...阶段: yii2里的数据表和model类属性之间的映射很酷(虽然被深坑过), 前面一直避开的模块(module,我可以想像得到把它也添加到URI时解析的麻烦)有时间考虑一下。...(即超出程序正常执行流程的某些特殊条件) 异常处理用于处理程序中的异常状况,虽说是“异常状态”,但仍然还是在程序编写人员的预料之中,其实程序的异常处理完全可以用‘if else'语句来代替,但异常处理自然有其优势之处...数据表和Model类的ActiveRecord映射 初次使用yii2的ActivceRecord类觉得好方便,只需要定义其字段同名属性再调用save方法就OK了(好神奇啊),它是怎么实现的呢,看了下源码