
Yii2框架
YII2
echojson
雄鹰在鸡窝里长大,就会失去飞翔的本领,野狼在羊群里成长,也会爱上羊而丧失狼性。人生的奥妙就在于与人相处。生活的美好则在于送人玫瑰。和聪明的人在一起,你才会更加睿智。和优秀的人在一起,你才会出类拔萃。所以,你是谁并不重要,重要的是,你和谁在一起。
展开
-
IoC基础
Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器原创 2020-06-30 11:42:06 · 188 阅读 · 0 评论 -
yii2 日记处理
一、实战1.1、配置'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ //保存日志消息到文件中 'class' => 'yii\log\FileTarget', //指定记录信息的等级 ...原创 2020-05-08 10:30:41 · 421 阅读 · 0 评论 -
ArrayableTrait提供[Arrayable]接口的实现。实现了 toArray(),数据(数组)的输出。
ArrayableTrait提供[Arrayable]接口的实现。实现了 toArray(),数据(数组)的输出。作用:数据转化成数组输出。代码:特性全部代码如下:/** * ArrayableTrait provides a common implementation of the [[Arrayable]] interface. * ArrayableTrait提供[Arrayab...原创 2020-05-03 09:37:08 · 908 阅读 · 0 评论 -
bootstrap启动阶段时需要运行的组件
bootstrap启动阶段时需要运行的组件这个属性很实用,它允许你用数组指定启动阶段 bootstrapping process 需要运行的组件。属性中的每个组件需要指定以下一项:应用 组件 ID.模块 ID.类名.配置数组.创建并返回一个组件的无名称函数.例如:[ 'bootstrap' => [ // 应用组件ID或模块ID ...原创 2020-05-01 19:37:26 · 174 阅读 · 0 评论 -
Yii2 基于header 实现接口版本控制
ii2 官方给出的方案是基于url的版本控制,但是我们的versoin放在header里面,需要通过header来进行版本控制,实现如下: 首先在基类中实现actions,actions是针对controller的action扩展,看源码可以知道,在createAction中会先检查actionMap,而actionMap=actions(),也就是说actions里面的配置优先于controll...原创 2020-05-01 19:30:41 · 250 阅读 · 0 评论 -
Yii2.0 RESTful API 之速率限制
Yii2.0 RESTFul API 之速率限制什么是速率限制?权威指南翻译过来为限流,为防止滥用,你应该考虑对您的 API 限流。 例如,您可以限制每个用户 10 分钟内最多调用 API 100 次。 如果在规定的时间内接收了一个用户大量的请求,将返回响应状态代码 429 (这意味着过多的请求)。说明:要启用速率限制,首先需要实现认证类启用速率限制翻阅权威指南,我们可以看到要启用速率限...原创 2020-05-01 19:28:24 · 407 阅读 · 0 评论 -
Yii2设计模式——注册树模式
注册树模式注册树模式(Registry Pattern)又叫注册模式、注册器模式。注册树模式通过将对象实例注册到一棵全局的对象树上,需要的时候从对象树上采摘的模式设计方法。为什么要采用注册树模式?单例模式在整个项目中创建唯一实例的问题;工厂模式封装了对象的创建方式(工厂方法——用一个抽象方法,抽象工厂——用一簇抽象方法),使得不必总用new关键词去获取对象;创建者模式则是分步骤的创建实例的各...原创 2020-05-01 19:25:49 · 145 阅读 · 0 评论 -
Yii2 设计模式——单例模式
单例模式模式定义单例模式确保一个类只有一个实例,并提供一个全局访问点。当现实中只需要一个对象,或者为了节省系统资源,又或者是为了共享数据的时候可以使用单例模式。代码实现我们先来看看单例模式的标准实现:final class Singleton{ /** * @var Singleton * 维持一个对自身的引用,并保证其唯一性 */ ...原创 2020-05-01 19:24:38 · 220 阅读 · 0 评论 -
Yii2 设计模式——静态工厂模式
应用举例yii\db\ActiveRecord//获取 Connection 实例public static function getDb(){ return Yii::$app->getDb();}//获取 ActiveQuery 实例 public static function find(){ return Yii::createObject(ActiveQuer...原创 2020-05-01 19:23:03 · 157 阅读 · 0 评论 -
Yii2 设计模式——简单工厂模式
除了使用 new 操作符之外,还有更多的制造对象的方法。你将了解到实例化这个活动不应该总是公开进行,也会认识到初始化经常造成“耦合”问题。应用举例yii\db\mysql\Schema 中://创建 QueryBuilder 实例public function createQueryBuilder(){ return new QueryBuilder($this->db);}...原创 2020-05-01 19:20:40 · 144 阅读 · 0 评论 -
工厂方法模式
模式定义工厂方法模式(Factory Method Pattern)定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类吧实例化推迟到子类。什么意思?说起来有这么几个要点:对象不是直接new产生,而是交给一个类方法去完成。比如loadTableSchema()方法这个方法是抽象的,且必须被子类所实现这个提供实例的抽象方法需要参与到其他逻辑中,去完成另一项功能。比如l...原创 2020-05-01 19:19:03 · 115 阅读 · 0 评论 -
Yii2 设计模式——Yii2 中用到哪些设计模式?
Yii 2 设计模式“包含了两个方面的内容:1. 设计模式,2. Yii 2 框架。《设计模式》一书虽然以JAVA语言来表达设计模式的思想,但是设计模式远不限制于某一种特定的语言,而是在面向对象编程中通用的思想,各个语言也都有各自的实现方式。Yii 2 是一款优秀的 PHP Web 框架,Yii2 框架的里里外外都借鉴了很多设计模式的思想。而且,越是 Yii2 内核的部分,设计模式运用的越多。...原创 2020-05-01 19:16:32 · 345 阅读 · 0 评论 -
Yii2 设计模式——设计模式简介
Yii2 设计模式——设计模式简介我们首先来思考一个问题:作为工程师,我们的价值是什么?笔者认为是——解决用户问题。我们的任何知识和技能,如果不能解决特定的问题,那么就是无用的屠龙之术;我们的任何经验,如果不能对解决新的问题有用,那这经验就是过时的。工程师不是空谈者,也不是理论家,再好的理论,再好的设计,不能落地变成产品,不能解客户燃眉之急,那终究也是水中月镜中花,迟早要被淘汰。能解决现实中...原创 2020-05-01 19:13:04 · 173 阅读 · 0 评论 -
yii2-queue一个好用的yii2队列操作扩展
yii2-queuea yii2 extension to make simple to use queue.yii2-queue让队列的使用在yii2中变得更轻松,她为各种队列组件的使用提供了一个标准的接口,您只需要配置好需要使用的队列组件,就能轻松使用, 同时您在不同队列组件之间的切换也只需要修改下配置文件,重启下队列监听进程即可,目前支持数据库队列,redis队列,beanstalkd队...原创 2020-05-01 18:46:46 · 433 阅读 · 0 评论 -
数据导出 toArray
数据导出模型通常要导出成不同格式,例如,你可能想将模型的一个集合转成JSON或Excel格式, 导出过程可分解为两个步骤:模型转换成数组;数组转换成所需要的格式。你只需要关注第一步,因为第二步可被通用的 数据转换器如yii\web\JsonResponseFormatter来完成。将模型转换为数组最简单的方式是使用 yii\base\Model::attributes()&...原创 2020-05-01 15:39:49 · 331 阅读 · 0 评论 -
模块
模块模块是独立的软件单元,由模型, 视图, 控制器和其他支持组件组成, 终端用户可以访问在应用主体中已安装的模块的控制器, 模块被当成小应用主体来看待,和应用主体不同的是, 模块不能单独部署,必须属于某个应用主体。创建模块模块被组织成一个称为base path的目录, 在该目录中有子目录如controllers, models, views ...原创 2020-05-01 15:36:59 · 175 阅读 · 0 评论 -
YII2过滤器
过滤器过滤器是 控制器动作 执行之前或之后执行的对象。 例如访问控制过滤器可在动作执行之前来控制特殊终端用户是否有权限执行动作, 内容压缩过滤器可在动作执行之后发给终端用户之前压缩响应内容。过滤器可包含 预过滤(过滤逻辑在动作_之前_) 或 后过滤(过滤逻辑在动作_之后_), 也可同时包含两者。使用过滤器过滤器本质上是一类特殊的 行为, 所以使用过滤器和&nb...原创 2020-05-01 15:35:50 · 452 阅读 · 1 评论 -
教你三种Model(AR)中自定义验证规则的方法
各位Yii2兄弟都知道Model的rules里面可以使用自己定义的验证规则,我们今天就把自定义规则做一个总结,进行一次彻底的知识归纳。和以往一样,先列目录。匿名函数形式类的公共方法形式自己建立验证类形式提前准备在User模型(User.php)里,我们想对一个字段username进行自定义验证,当username的值为abei的时候通过,否则提示“不是abei,不能通过。”匿名函...原创 2020-05-01 15:33:50 · 279 阅读 · 0 评论 -
Yii2缓存机制 - DbCache
如果要启动数据库缓存,必须要有一个数据库及数据表,这些可以通过cache的配置文件完成'cache' => [ 'class' => 'yii\caching\DbCache', 'db' => 'cachedb', 'cacheTable' => 'cache',],参数说明db参数如果不设置会使用yii默认的db.php内的配置文件...原创 2020-05-01 15:32:34 · 317 阅读 · 0 评论 -
Yii2 Excel Export
Yii2 Excel Export [ 2.0 版本 ]FeaturesExport data from ActiveQuery resultsExport any other data (Array, Iterable, …)Create excel files with multiple sheetsFormat cells and values...原创 2020-05-01 15:23:30 · 352 阅读 · 0 评论 -
Macroable 宏指令详解
百度百科的定义:计算机科学里的宏(Macro),是一种批量处理的称谓。一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。这种替换在预编译时进行,称作宏展开。宏 Traits完整的源码如下:namespace Illuminate\Support\Traits; use Closure;use R...原创 2020-05-01 15:20:53 · 839 阅读 · 0 评论 -
YII2的乐观锁和悲观锁
乐观锁与悲观锁[¶]Web应用往往面临多用户环境,这种情况下的并发写入控制, 几乎成为每个开发人员都必须掌握的一项技能。在并发环境下,有可能会出现脏读(Dirty Read)、不可重复读(Unrepeatable Read)、 幻读(Phantom Read)、更新丢失(Lost update)等情况。具体的表现可以自行搜索。为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的...原创 2020-05-01 15:18:44 · 775 阅读 · 0 评论 -
Yii2基本概念之——属性(property)
学习任何一门学问,往往都是从起基本的概念学起。万丈高楼平地起,这些基本概念就是高楼的基石,必须做详尽的分析。我们知道,Yii2是一款脉络清晰的框架,理顺了基础的概念和基本功能,学习更高级和复杂的功能就容易多了。Yii2是一款纯面向对象的框架,它对类的功能做了扩充:PHP类的功能分为属性和方法,而Yii2定义了类的三个功能:属性(property),行为(behavior)和事件(event)。...原创 2018-04-22 13:29:37 · 303 阅读 · 0 评论 -
Yii2基本概念之——事件(Event)
说起事件(event),我们可是一点都不陌生。现实生活当中的事件无处不在,比如你发了一条微博,触发了一条事件,导致关注你的人收到了一条消息,看到你发的内容;比如你通过支付宝买东西,付了款,触发一个事件,导致你收到一条短信,告诉你刚刚扣款了,你账户余额还有多少…我们将事件稍稍加以抽象,发现事件具有某些共同特点,比如事件其实不是孤立存在,它只是某个流程或者工序的一个特殊的“点”,可以理解为时间点,...原创 2018-04-22 14:29:47 · 944 阅读 · 0 评论 -
Yii2基本概念之——行为(Behavior)
使用行为(behavior)可以在不修改现有类的情况下,对类的功能进行扩充。通过将行为绑定到一个类,可以使得类具有行为本身所具有的属性和方法,就好像是类本来就具有的这些属性和功能一样。好的代码设计,必须要同时满足可复用性、可维护性和可扩展性。设计原则中有一条非常重要的一条:类应该对扩展开放,对修改关闭。改变原有代码往往会带来潜在风险,因此我们尽量减少修改的行为。我们的目标是允许类容易扩展,在不...原创 2018-04-22 15:01:44 · 504 阅读 · 0 评论 -
Yii2基本概念之——配置(Configurations)
在Yii中创建新对象或者初始化已经存在的对象广泛的使用配置,配置通常包含被创建对象的类名和一组将要赋值给对象的属性的初始值,这里的属性是Yii2的属性。还可以在对象的事件上绑定事件处理器,或者将行为附加到对象上。从而在定义了对象的初始值的同时,充分规定对象的运行时的动态特性。以下代码中的配置被用来创建并初始化一个数据库连接:$config = [ 'class' => '...原创 2018-04-22 15:10:36 · 447 阅读 · 0 评论 -
Yii2多表关联查询(hasOne、hasMany、join、joinwith)
表结构现在有客户表、订单表、图书表、作者表,客户表Customer (id customer_name)订单表Order (id order_name customer_id book_id)图书表 (id book_name author_id)作者表 ...原创 2018-04-29 10:42:22 · 2944 阅读 · 0 评论 -
Yii框架下的SQL技巧
条件查询$customers = Customer::find()->where($cond)->all(); $cond就是我们所谓的条件,条件的写法也根据查询数据的不同存在差异,那么如何用yii2的方式来写查询条件呢?[[简单条件]]// SQL: (type = 1) AND (status = 2). $cond = ['type' => 1,...原创 2018-06-15 14:01:10 · 1834 阅读 · 0 评论 -
《深入解剖Yii2框架》前言
写代码需要站在巨人的肩膀上,将主要精力集中在自己所需要实现的业务上面,避免反复搭建基础服务,重复造轮子。PHP框架就是这样一些巨人的“肩膀”,使得我们“站”得更高,“看”得更远。像PHP本身有着不断迭代和升级的历史一样,PHP框架也有着自己的发展历史,从简单到复杂,从低级到高级,从面向过程到面向对象。目前,比较流行的是以Laravel5.2+,Yii2,ZendFramework2.0,Sym...原创 2018-04-22 13:06:28 · 196 阅读 · 0 评论