用PHP开发微信应用遇到的坑

最近因为业务需要,尝试着做了一些基于微信公众平台的开发。考虑到主要是网站应用和轻度电商,业务逻辑不复杂,加上看到开源php的东西比较多,于是决定基于php进行开发。
以前基本没怎么研究过php,因此做了如下工作:
安装试用weiphp
安装试用微擎
学习使用thinkphp

遇到问题及解决如下:

PHP方面的:

empty() 只检测变量,检测任何非变量的东西都将导致解析错误。

Thinkphp框架中Model的save()方法,成功时候的返回值并不是数据对象本身,目测是成功的记录条数。

JSON对象要decode成为数组以后,再放入session,取出来的时候方便使用。php还是跟数组配合更好。

foreach语句中,如果要修改所遍历数组的值,则应该用&符号进行引用。

微信方面的:

网页授权的时机选择,如果是在某业务(某方法)中途进行身份验证再去要求网页授权,由于网页授权是回调的方式,因此每个页面(控制器->方法)的逻辑即可能是通过微信回调后在调用的,也可能是还没有微信授权的时候调用的。这样的界面逻辑会比较复杂,容易混乱。因此最后统一成,除非是不需要身份验证的页面,否则一律先要求网页授权再说。

微信内置浏览器/手机浏览器方面的:

注意javascript与html标签在文档中出现的顺序问题,有时候在脚本中用选择器取不到页面元素的值的时候,可能就是这个问题。

音频在部分手机上死活不能播放,哪怕手动点播放按钮也不成。发现跟比特率有关系,128KHz就遇到这样的问题,转成96KHz就好了。

静态页面缓存的问题。有的页面根据业务逻辑会呈现不同的内容,但微信浏览器的缓存会导致最新的业务状态没法体现,显示的还是上一个状态的页面。解决办法是在Header中加入如下信息:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

作者: Ben

IT、电商、零售、医药行业混迹多年的理想主义者。