修改一个我之前开发的一个 Discuz 插件对于 PHP 5.2 的支持(当时插件开发环境是 PHP 5.6.37),发现以下几处需要注意的地方:
- PHP 5.2 不支持
$this::$staticVar
,需改为:self::$staticVar
; - nowdoc 需要 5.3+,需改为 heredoc 或普通的字符串定义;
__DIR__
需要 5.3+,需改为:dirname(__FILE__)
;- 声明类变量为 heredoc 需要 5.3+,需改为普通的字符串定义;
- PHP5.2 不支持
$a = $a ?: $b;
,需改为:$a = $a ? $a : $b;
; - 没有
SQLite3
类,可以用一堆sqlite_open
,sqlite_query
之类的函数,或SQLiteDatabase
替代。 error_reporting
时,没有E_DEPRECATED
、E_USER_DEPRECATED
。
参考:https://php.net/manual/zh/errorfunc.constants.php
花了一下午才弄好,也是填坑填大发了,之前还是有蛮多地方欠考虑(毕竟没有专门做 PHP 这块,缺乏这些细节的了解(真是个好借口))。
另外还想吐槽一下:
- PHP:虽然我依旧觉得 PHP 很优秀,新手友好,但和 Python 比,还是不如,编程体验差很多。
- Discuz:应该被淘汰了吧,为什么还有这么多人用,真是的!