win10 docker-toolsbox 搭建php开发环境

2019-10-19
阅读 5 分钟
3.1k
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql57 mysql:5.7

Laravel框架FormRequest中重写错误处理

2019-01-09
阅读 2 分钟
3.2k
laravel 框架中默认的validate验证,在处理错误的时候,默认是返回上一页,当为ajax的时候才会返回Json。如果我们要一直返回Json的话,那么需要重写错误处理

关于Jwt的一些思考

2018-10-11
阅读 1 分钟
2.9k
每次更新过期时间,跟session一样,每次请求的时候都会去更新下token过期时间.但是对于jwt来说,更新过期时间就意味着jwt的token会变,那么前端就需要每个请求都去保存一次新的token。这样使得前端的工作变的复杂起来。而且这样做的话,会存在多个令牌同时有效,可能会引起一些安全问题。

PHP JWT初识

2018-10-10
阅读 4 分钟
3.2k
一直没有好好看过jwt,直到前两天要做web验证,朋友给我推荐了jwt。才发现jwt已经被大家广泛的应用了。看来我有点out了。哈哈,趁着这个世界来好好看看这个。

PHP插入排序

2018-09-07
阅读 1 分钟
1.4k
冒泡排序 对数组$arr = [9,7,2,77,31]按从小到大进行排序 {代码...} 比较,逻辑大致是这样的。默认第一个元素是最小值,所以从第二个元素开始一次与前面的元素进行比较,插入到合适的位置 i=1 j=0 时;将7与9进行比较。发现7比9小,交换位置,此时得到数组[7,9,2,77,31] i=2 j=1时;将2与9进行比较。发现2比9小,交换位...

PHP冒泡排序

2018-09-04
阅读 2 分钟
2k
冒泡排序 对数组$arr = [1,7,5,3,3,2]按从小到大进行排序 {代码...} 比较,逻辑大致是这样的。 当i=0的时候进行第一次冒泡 j=0=> 1-7比较,7比1大,不做改变 [1,7,5,3,3,2] j=1=> 7-5比较,5比7小,交换位置 [1,5,7,3,3,2] j=2=> 7-3比较,3比7小,交换位置 [1,5,3,7,3,2] j=3=> 7-3比较,3比7小,交换位置 [1...

推荐一个php7+ mongodb三方类

2018-09-03
阅读 2 分钟
2.4k
由于项目需要,把项目升级到了php7。但是升级了之后发现mongo扩展不能用了。php7.0以上只支持mongodb扩展了。而mongodb扩展的驱动使用起来比monmgo扩展显得很复杂,啰嗦。在网上找了很久。终于找到了一个比较简洁的mongodb类。语法跟mongo的差不多。清晰,自然。

利用Redis锁解决高并发问题

2018-09-03
阅读 4 分钟
16.3k
setnx 有两个参数。第一个参数表示键。第二个参数表示值。如果当前键不存在,那么会插入当前键,将第二个参数做为值。返回 1。如果当前键存在,那么会返回0。

PHP利用Mysql锁解决高并发

2018-09-03
阅读 3 分钟
2.8k
前面写过利用文件锁来处理高并发的问题的,现在我们说另外一个处理方式,利用Mysql的锁来解决高并发的问题 先看没有利用事务的时候并发的后果 创建库存管理表 {代码...} 创建订单管理表 {代码...} 测试代码 {代码...} 我们预置库存是十个,然后执行ab测试查看结果 {代码...} 得到了订单共有12个,而库存表的库存也减到了...

PHP AES cbc模式 pkcs7 128加密解密

2018-09-03
阅读 2 分钟
4.6k
今天在对接一个第三方接口的时候,对方需要AES CBC模式下的加密。这里简单写一个demo {代码...} 执行test方法 加密结果 {代码...} 解密结果 {代码...}

PHP 利用文件锁处理高并发

2018-09-03
阅读 1 分钟
6.2k
利用flock()函数对文件进行加锁(排它锁),实现并发按序进行。 flock(file,lock,block)有三个参数。 file : 已经打开的文件 lock : 锁的类型 LOCK_SH : 共享锁定(读锁) LOCK_EX : 独占锁定(排它锁,写锁) LOCK_UN : 解锁 LOCK_NB : 如果希望在文件锁定时阻塞进程,那么需要加上该参数 block : 设置为true的时候,锁...

Redis 应用场景【商品拼团抢购】

2018-09-03
阅读 1 分钟
2.6k
lpush命令:将值插入到列表头部,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。

PHP 特性之 trait (二)

2018-09-03
阅读 3 分钟
1.8k
命名冲突如果使用了多个Trait,并且多个Trait中的命名有重复,那么这个时候就会产生一个致命的错误。为了正确的使用这些Trait,我们需要用insteadof来调用这些同名的方法。

PHP 特性之 trait (一)

2018-09-03
阅读 2 分钟
1.8k
在阅读laravel文档的时候看到一个类 是以 Trait声明的。平时在工作中从来没有用过,于是就去看了下官方文档。原来这个类早在php5.4.0就有了。可惜在项目中从来没有用过。

PHP 闭包之变量作用域

2018-09-03
阅读 1 分钟
2.2k
以上结果会输出 hello_php 那么可以看到 $a 被作为了变量 通过use传递给了 匿名函数 func 作为参数使用;如果去掉$a = 'java'的注释,那么以上结果会输出 hello_java

PHP 设计模式之工厂模式 (静态工厂模式)

2018-09-03
阅读 3 分钟
2k
由工厂类根据参数来决定创建出哪一种产品类的实例。工厂类是指包含了一个专门用来创建其他对象的方法的类。所谓按需分配,传入参数进行选择,返回具体的类。工厂模式的最主要作用就是对象创建的封装、简化创建对象操作。 简单的说,就是调用工厂类的一个方法(传入参数)来得到需要的类;

PHP 中 call_user_func 的使用

2018-09-03
阅读 1 分钟
4.2k
call_user_func函数类似于一种特别的调用函数的方法,使用方法如下 第一种情况: {代码...} 此时 第一个参数 set_max 作为call_user_func 的回调函数使用,$a=111,$b=222。 第二种情况 {代码...} 此时第一个参数为一个数组 那么 回调就是 a类里面的b方法,num作为参数传到b方法里面。省去了实例化a的过程。说到这里就不得...

PHP中的服务容器与依赖注入的思想

2018-07-02
阅读 3 分钟
3.7k
当A类需要依赖于B类,也就是说需要在A类中实例化B类的对象来使用时候,如果B类中的功能发生改变,也会导致A类中使用B类的地方也要跟着修改,导致A类与B类高耦合。这个时候解决方式是,A类应该去依赖B类的接口,把具体的类的实例化交给外部。

PHP通过反射来得到类,以及一些基本的应用

2018-06-14
阅读 2 分钟
3.8k
这几天在看laravel框架的核心代码。发现大量的使用了反射机制。下面就来简单看看一些反射的应用 {代码...} 下面我们来通过这个反射来得到A的私有属性 {代码...} 这样我们就可以很轻松的获得A的私有属性了。那么执行私有方法应该怎么操作呢。接下来我们先看执行共有方法,执行公有方法比较简单。 {代码...} 这样就可以调...