PHP

实用函数

JSON

JSON 编解码:

json_encode();
json_decode();

json_encode() 默认对中文以及 / 字符转义,取消这两种字符转义:

json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); 

注意到 JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES 的值为 320,因此以上函数调用等同于:

json_encode($data, 320); 

json_decode() 解码默认返回 Object,第二个参数设置为 true 时返回关联数组:

json_decode($s, true);

Redis

有多种方法安装 PHP Redis

$ pecl install redis
$ pickle install redis
$ yum install php-pecl-redis

安装 phpredis 时可能需要关联的几个库:

  • igbinary - 用来替代标准的 PHP Serializer

安装 phpredis 后,检查 php.ini 是否自动开启了 redis.so

$ cat /usr/local/etc/php/7.2/php.ini | grep redis
extension="redis.so"    

如果以 php-fpm 方式运行,重启 Apache 服务:

$ brew services restart httpd

PHP 版本

PHP 5.6 升级到 PHP 7

  • ext/mysql 已不再支持,可以继续使用 ext/mysqliPDO_MySQL,参考 PHP 官方文档 - MySQL API
  • INI 文件中不支持 # 打头的注释。注释行应用 ; 打头。
  • JSON 扩展被 JSOND 取代;解析空字符串将被视为错误。
  • 浮点数转整数如果溢出(浮点数太大)会生成 E_WARNING 错误并返回 NULL。

异常与错误处理

PHP 7 引入了 Throwable 接口和 Error 类:

  • 所有可以通过 throw 抛出的对象都继承自 Throwable 接口
  • 所有 PHP 内部错误都继承自 Error

Exception 类在 PHP 5 中就有,PHP 7 中 Exception 实现了 Throwable 接口,用户定义的异常都应该继承自 Exception 类。这三者间的关系如下:

Throwable
    └── Error
    └── Exception

参考