本文实例讲述了YII2框架使用控制台命令的方法。分享给大家供大家参考,具体如下: 有些时候我们需要通过crontab在后台跑一些定时脚本,这时候就需要用到控制台命令了。...我们在commands目录下创建TestController.php,当然脚本的位置是可以随意指定的,只需要在config/console.php中配置好就行。...p1, ' ', $p2, ' ', $p3, "\n"; return ExitCode::OK; } // 当然控制台也可以一次传多个数据过来,这就需要把函数参数声明为一个array...// 控制台传参时就需要把传递的数据通过逗号连接起来,YII2通过处理变成数组 // yii test/test3 aa,bb,cc public function actionTest3...更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string
']] // username的输入值必须在username和province中存在 [["username","province"],"exist",'targetAttribute' => ['username...', 'province']] // username和province的输入值必须在username和province中存在 file验证 /* maxFiles代表一次最多传几个,mimeTypes...基础用法 一个字符串中单词数量 StringHelper::countWords("hello world");//2 返回路径中的文件名部分 StringHelper::basename...基本用法 使用Query Builder需要使用的类 $query = (new \yii\db\Query()); // yii2使用Query对象来采集SQL的各个部分,然后由Query Builder...415: 不支持的媒体类型。 所请求的内容类型或版本号是无效的。 422: 数据验证失败 (例如,响应一个 POST 请求)。 请检查响应体内详细的错误消息。 429: 请求过多。
本文实例讲述了YII2框架中查询生成器Query()的使用方法。分享给大家供大家参考,具体如下: YII2中的yii\db\Query给我们提供了非常丰富的方法,方便我们构建复杂的SQL语句。...Query()与createCommand最大区别在于,后者直接使用我们写好的SQL语句,前者通过参数和数据库类型生成不同SQL,迁移性更好。 <?...extends Controller { public function actionTest() { //YII2的Query的使用 //Query与createCommand的区别是createCommand...//Query是根据参数和数据库类型生成不同的SQL,提升数据库可迁移性。...//之前where数组是以key= value方式传递的,如果要表达复杂逻辑关系, //数组第一个元素必须声明是什么逻辑,and还是or //第二个元素表示逻辑左边 //第三个元素表示逻辑右边 $data13
大家都知道Migrations是一个在开发和维护数据库驱动的应用过程中,数据库的结构与源代码的开发同步更新。...下面foreach循环就是为了等下输出的时候方便(Non_unique在作者这里原以为用Migrations新增索引的时候能该类型,所以就写上去了,谁知道后面发现索引类型,已经写死了,必须为unique...类型,createIndex方法代码在:/vendor/yiisoft/yii2/db/Migration.php 468行) 数据表有用到外键的朋友,代码你们可能要自己手写一小段了,作者项目中未遇到外键所以代码没写...接着往下代码就是渲染视图模板,模板路径在上面刚刚已经说了,这个时候,我们把刚刚查出来的三个数组传进去。...例如,在mysql类型中是:smallint 但我在Migrations中必须是 smallinteger 包括 bigint 也要改为 biginteger,目前我就发现这两个不一样,其他的暂时还没遇到
随机小技巧 当表单提交操作时,如出现“Unable to verfy your data submission”错误,是被Yii2框架的CSRF验证拦截了。...例如['and','id=1','id'=2']将会生成id=1 AND id = 1, 如果操作是一个数组,它也会转化字符串。...例如:['in','id',[1,2,3]] 将生成id IN(1,2,3) like: 第一个操作数应为一个字段名或数据库表达式,第二个操作数可以是字符串或数组,代表第一个操作数需要模糊查询的值。...exists:该操作数必须是代表子查询yii\db\Query的一个实例,会构建一个EXISTS表达式。...not exists:该操作数必须是代表子查询yii\db\Query的一个实例,会构建一个NOT EXISTS表达式。 \>或 <=:第一个操作数必须为字段的名称,第二个操作数则应该为一个值。
<br/ '; } 这时候答案呼之欲出— 是yii2框架搞了鬼 定位问题 既然知道了是yii2 框架的问题那就可以进一步缩小问题。...这时候我测试了一个其他的yii2类 发觉内存不增长了。 这就可以联想到是在new 对象的时候yii2内部自己执行了什么操作,然后导致内存泄漏。 什么方法是new 的时候就执行的呢。。。...这个时候我们不妨换个思路, 既然是yii2框架下出现的泄漏, 那肯定就是yii2独有的功能, 那什么功能是yii2独有的,又是在new 对象的时候就会执行的呢?...[$this, $handler] : $handler); } } 问题总结 这个时候答案已经呼之欲出, Yii2为了实现行为这一功能, 把自身this传进去,以便能注册事件、触发事件、解除事件...不过在前后端完全的分离的趋势下,Yii2前后端的耦合的还是有些重了。 2、从代码的可读性方面,Yii不会为了刻板地遵照某种设计模式而对代码进行过度的设计。
本文实例讲述了YII2框架中日志的配置与使用方法。分享给大家供大家参考,具体如下: YII2中给我们提供了非常方便的日志组件,只需要简单配置一下就可以使用。...我们在config/web.php中配置如下: return [ //log必须在bootstrap期间就被加载,便于及时调度日志消息到目标 'bootstrap' = ['log'], 'components..., 'db'); YII::error('我是错误!!!', 'db'); ? 由于没有登陆和分模块,所以没获取到用户ID和模块ID,不过控制器ID和方法ID都获取到了。...'], ], ], ], 有人会问YII2设置flushInterval和exportInterval的作用是什么,因为在一些系统中日志的操作会很频繁,如果频繁的读取文件或数据库来写日志,会造成严重的...IO消耗,降低系统性能,这也是YII2的一个优化吧。
", //描述(description是必要属性) "keywords": ["framework", "laravel"], //用于搜索与筛选的与包相关的关键字keywords是非必须属性..."license": "MIT", //表示包的许可证,可以是字符串也可以是字符串数组,license是非必须属性 "type": "project", /.../包的类型,默认为库library,composer原生支持4中类型:“library”将文件复制到vendor目录。...//“project”当前包是一个项目,"metapackage" 和 "composer-plugin" "require": {//表示必须安装的依赖包列表,这些包必须满足条件,否则不会安装..."require": { "php": ">=5.4.0", "yiisoft/yii2": "~2.0.14", "yiisoft/yii2-bootstrap
本文实例讲述了YII2框架中ActiveDataProvider与GridView的配合使用操作。...分享给大家供大家参考,具体如下: YII2中ActiveDataProvider可以使用yii\db\Query或yii\db\ActiveQuery的对象,方便我们构造复杂的查询筛选语句。...//设置规则 //注意,如果没有给字段设置规则,GridView的筛选项是不会出现的 public function rules() { return [ [['id',...extends Controller { public function actionTest() { $user = new MyUser(); //调用模型search方法,把get参数传进去...更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string
/vendor/yiisoft/yii2/Yii.php'); require(DIR . '/../.....$config这个配置数组中,然后使用这个配置数组作为参数去创建一个应用实例。...这些组件的信息是在引入进来的几个配置文件中配置的,Yii组件就是使用这些参数信息进行注册与创建的。 ...类最终也继承了\yii\base\Object类,\yii\base\Object类是支持属性的,所以yii\web\Application类也支持属性(关于属性,可以参考我的另一篇博文:yii2之属性...\yii\di\Container的get()方法,接着就是依赖注入创建对象的过程了,关于这个过程已经在我的上一篇博文中讲解过了,可以参考一下:yii2之依赖注入与依赖注入容器。
本文实例讲述了YII2框架中操作数据库的方式。...分享给大家供大家参考,具体如下: 一、以createCommand方式: // YII2中通过createCommand来处理数据库 // 查询多条记录 // {{%user}} 表示如果设置了表前缀...// createCommand的第二个参数可以进行参数绑定 $data2 = YII::$app- db- createCommand('select * from {{%user}} where...find()会返回一个ActiveQuery对象,ActiveQuery对象继承自yii\db\Query,所以可以使用Query中的所有查询方法 $data1 = MyUser::find()- where...更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string
作为自己的周总结,平时遇到的问题,以及一不小心踩的坑,记录下来自己当复习: 表单验证 表单验证,两个参数中至少需要一个(2个以上): public function rules() {...获取url中的host信息: # http://localhost Yii::$app->request->getHostInfo() 获取url中的路径信息(不包含host和参数): Yii...Yii::app()->request->url 只想获取url中的参数部分: # r=news&id=1 Yii::$app->getRequest()->queryString 获取某个参数的值.../ 引用命名空间 use yii\helpers\VarDumper; // 使用 VarDumper::dump($var); // 使用2 第二个参数是数组的深度 第三个参数是是否显示代码高亮...(默认不显示) VarDumper::dump($var, 10 ,true);die; restful 获取 GET 和 POST 过来的数据(得到结果是数组): // post Yii::$app
ctfshow=ctfshow_i_love_36D Web261 unserialize() 函数用于将通过serialize()函数序列化后的对象或数组进行反序列化,并返回原始的对象结构。...PHP弱类型比较,0x36d没有引号代表数字,十六进制0x36d转为十进制是877,因为弱比较,实际上877.php这样一样可以通过判断。...同时file_put_contents()函数,这也给我们传一句话木马的机会,这里我就不多解释,直接看菜鸟教程吧 另外如果类中同时定义了 __unserialize() 和 __wakeup() 两个魔术方法...'; 之后在访问message.php,即可 Web264 Web267 从这道题之后的内容考察的是Yii的框架漏洞,**Yii2 反序列化漏洞(CVE-2020-15148)**, Yii2 2.0.38...关于这个漏洞可以看这个文章Yii2 反序列化漏洞(CVE-2020-15148)复现 <?
值转为json字符串,在json中获取name的值并移除new-rule-type的元素 接着,通过调用Craft::app->getConditions()方法获取条件服务对象,再创建条件对象 判断路由...调用Action类的构造函数将id, controller, 继续跟踪到Controller,该类用于处理用户请求和响应, 这里主要看传入的id参数进行处理,遍历id参数是否包含在模块中, 包含则返回...单步调试至createObject,判断传入的数组必须含有class或者_class,并执行return static::container->get(params, type),否则报错 执行return...this->build(params, config) 存在__construct就执行,创建空数组$addDependencies并传入__construct参数 全局搜索__construct,遍历数组...踩坑日记 这里遇到一个坑,要是第一次参数传错了,那么今天一天都rce不了了,这里因为先传了一个 <?
label标签 // ActiveForm类 $form- field($model, '字段名')- passwordInput(['maxlength' = true])- label(false) Yii2...$id:null]); 有两种方式获取查询出来的 name 为数组的集合 [name1, name2, name3]: 方式一: return \yii\helpers\ArrayHelper::getColumn...\helpers\VarDumper; // 使用 VarDumper::dump($var); // 使用2 第二个参数是数组的深度 第三个参数是是否显示代码高亮(默认不显示) VarDumper::...host信息 Yii::$app- request- getHostInfo() 获取url中的路径信息(不包含host和参数): Yii::$app- request- getPathInfo() 获取不包含...r=news&id=1 Yii::$app- request- url 或者 Yii::$app- request- requestUri 只想获取url中的参数部分 # r=news&id=1 Yii
阅读yii2的代码,能学到很多东西,代码写的很优雅,用到了很多php-5.4版本的新特性。...BaseYii这个类,在yii2框架中被称作 core help class,在yii2框架中被很多类用到,它的namespace是yii.详情参照下图: ?...先说property: 他们都是静态的成员变量 classMap yii框架自动加载机制使用,是一个关联数组,key值为首字母不为\的类名(即namespace+classname的类全名...'@yii' => DIR]; objectConfg yii是组件式框架,objectConfig是使用createObject()创建组件或者类对象使用的配置,这个是关联数组 key值是首字母不为...,创建一个组件(类)的方法,$config如果是一个字符串,那它必须是组件或者类的名称,如果是一个数组,必须设置 $config['class'],假设$config的值是 $config['class
这篇文章主要来看看在Yii2之中的MVC,当然,最核心的思想还是跟Yii1.1一样的,但是我今天是想来看看在Yii2里的MVC跟Yii1.1有什么不同,或者应该直接说,Yii2的改进在哪里,以至于使得官方敢向着最好的...在每一个Model当中,attributes和attributes label其实跟Yii1.1差不多,但让我特别值得拍手称快的是在Yii2中,除了rules()函数之外,还有scenarios()函数来增强...在Views还有一个值得注意的地方就是this变量,在Yii1.1中,this可以说就是链接Controller和Views的中介;而在Yii2中, 控制器(Controllers) 首先直接来看一下代码...不过,你在Yii2的Controller中只需认识这些新特性基本就足矣,因为一些更基本的东西跟Yii1.1是一样的,完全不用怕,(我是说如果你上手过Yii1.1的话)。...写在最后 正如你在这篇文章看到的一样,在Yii2中几乎所有的MVC组件变化都使得Yii2更好用了,我相信这会带给开发者更好的的开发体验,毕竟Yii2 中看到了一丝丝优雅的样子!
比如看下面yii2的一个description。...比如我们开发的yii2扩展,它的类型就是 yii2-extension,而yii2程序提供了一个逻辑进行该包的处理。...require* 必须的软件包列表,除非这些依赖被满足,否则不会完成安装。这个是很重要的,比如你按照yii2-emoji,它的require是下面的样子。..."require": { "yiisoft/yii2": "*", "emojione/emojione": "^3.1" } 则必须还要安装yiisoft/yii2和emojione/...require-dev (root-only) 这个列表是为开发或测试等目的,额外列出的依赖。可以使用 --no-dev 参数来跳过 require-dev 字段中列出的包。
大家好,又见面了,我是你们的朋友全栈君。 我们做程序的时候,加密解密是绕不开的话题,使用yii2开发应用的时候,都内置了哪些有关加密解密(安全)方便的支持那?本文将为你揭晓。...相关环境 操作系统及IDE macOS 10.13.1 & PhpStorm2018.1.2 软件版本 PHP7.1.8 Yii2.0.14 在yii2中,管理加密解密的库叫做Security,它以yii2...生成一个随机的字符串,参数$length代表这个字符串的长度,默认32位。值得说明的是这个字符串的取值为范围是[A-Za-z0-9_-]。...pbkdf2 使用标准的 PBKDF2 算法从给定的密码导出一个密钥。该方法可以用来进行密码加密,不过yii2有更好的密码加密方案 generatePasswordHash。...validateData 函数的第三个参数应该与使用 hashData() 生成数据时的值相同. 它指示数据中的散列值是否是二进制格式. 如果为false, 则表示散列值仅由小写十六进制数字组成.
返回值:返回调用函数的结果,或FALSE。 call_user_func_array()的用法跟call_user_func类似,只不过传入的参数params整体为一个数组。...另外,call_user_func系列函数还可以传入在第一个参数里传入匿名参数,可以很方便的回调某些事件,这些特性在复杂的框架里应用也十分广泛,如yii2的事件机制里回调函数的使用就是基于此。...VIEW层和ob函数 框架在controller的基类中定义了render方法来渲染页面,它会调用类VIEW的静态函数来分析加载对应页面的模板。...构造其__clone魔术方法,防止clone出一个新的对象; DB类的sql查询函数 DB查询函数是一个很复杂的部分,它是一个自成体系的东西,像TP和YII的查询方法都有其独特的地方。...后续 yii2里的数据表和model类属性之间的映射很酷(虽然被深坑过), 前面一直避开的模块(module,我可以想像得到把它也添加到URI时解析的麻烦)有时间考虑一下。 边写边优化。
领取专属 10元无门槛券
手把手带您无忧上云