关于trait之前可以说是完全没有了解过,看了官方文档之后才得知是php5.4的新特性,用来解决在不同结构(模块)下代码复用的问题.具体可以查看php手册
手册的介绍相对来说还是比较清晰的,那这篇文章就是为了献给那些不喜欢看文档,喜欢直接上手使用的童鞋.

首先介绍一下我的项目结构 我在Common模块下新建了一个文件traits 命名空间为 common/traits。

现在有多个模块需要使用相同的代码,那么就在traits下新建一个控制器,写入公用的代码

最近做前端的工作比较多,经常会遇到一些自己不太明白的问题,非常的懵逼。
比如做一个简单的ajax异步提交会出现两次请求的问题,也是最近遇见比较奇怪的问题。

经过排查之后发现两次出现两次请求的原因可能是:

1.引入了两个同样的js,比如引入了两个同样的jquery插件


下面先为大家介绍两个php函数:
array_column():返回输入数组中某个单一列的值。

小例子:


array_column的用法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$a = array(
array(
'id' => 5698,
'first_name' => 'daichong',
'last_name' => 'css',
),
array(
'id' => 4767,
'first_name' => 'dc',
'last_name' => 'js',
),
array(
'id' => 3809,
'first_name' => 'DC',
'last_name' => 'web',
)
);
$lastNames = array_column($a,'first_name')

关于前端存储的方法用很多,最为常见的是cookie和locationStorage。

其中cookie的限制比较大,比如必须需要cookie.js、浏览器对cookie的数量限制(之前的浏览器每个域名限制cookie之恶能存储50个),数据长度的限制(大部分浏览器是4085字节左右,但实际更小)。

locationstorage能存储4-5M大小的数据,有效期未永久。

application cache 是离线缓存,存储大小也是5M左右,他与其他两种方式的不同在与浏览器缓存是对单个文件,而applocation cache是对整个应用,当整个应用都缓存下来的时候可以达到无网络连接。

今天我要写的是locationstorage的sessionStorage,他们的用法完全相同,很简单,但是真的很实用。今天使用之后我觉得这个sessionStorage真的是太方便了。

今天来写一篇如何优化在循环里的sql。相信大家都会遇到在foreach里循环操作数据库,上学的时候一听到循环查表这类的词,哇!感觉很高端,殊不知这样的操作对数据库的压力是无限大的。像一个三级的分类数据操作,很多人会选择循环查表,毕竟这样的写法是最方便、最简单的。前期数据量小的时候是没有很明显的问题,到了一定程度,你会发现页面加载速度越来越慢,数据库的压力越来越大。这个时候你必须要选择修改你的程序了!

但是这篇文章不是来介绍如何优化循环查询的,是介绍如何来优化循环修改表数据的。

今天一直在和别的公司对接接口,之前的对接都没有做来往日志,这样的话功能出了问题要针对性的找到问题的原因比较麻烦,逼不得已只能做个日志记录一下。而且程序还没有使用任何框架,又不想研究别人的代码,没办法只能自己简单的做一个写入日志的功能。

mysql on duplicate key update 对于不是很常用的人来说是比较陌生的。那么他到底是用来干什么的呢?下面就介绍一下:

比如在我们做一个点击量的功能,程序的逻辑是这样的:
在用户点击的时候我们首先要判断数据表中已经存在了这个人的数据,如果存在日志表对应的用户点击次数加1,如果不存在新增一条数据。

那么按照正常的编程需要有两条sql

先查询数据表中是否有,有了执行修改操作,没有执行添加操作。一条查询一条修改或添加。

那么有了这个on duplicate key update 之后就可以把这两个sql简化为一条,减少了数据的查询次数、避免了数据重复而且少打一些代码,可谓是一举三得!

这几天在做一个微信小程序,在微信公众平台已经完成的配置,以及接口的开发。最后却发现小程序的openid和微信公众号的不一致,再看了微信文档之后发现,小程序和微信公号的openid都是独立的。只有一个UnionID是通用的,到这里就可以通过微信的接口getuserinfo去获取了。但是有很多人是获取不到的,下面就介绍一下有什么情况是获取不到的:

第一种情况:微信请求用户授权,用户未同意


第二种情况:用户没有关注过小程序绑定的公众号、也没有登录过


第三种:在微信公众平台未绑定开发者


如果这三种情况都没有,是可以获取到unionId的。