TOC

PHP 5.2 与 PHP 5.3+ 的几处差异

修改一个我之前开发的一个 Discuz 插件对于 PHP 5.2 的支持(当时插件开发环境是 PHP 5.6.37),发现以下几处需要注意的地方:

  1. PHP 5.2 不支持 $this::$staticVar,需改为:self::$staticVar
  2. nowdoc 需要 5.3+,需改为 heredoc 或普通的字符串定义;
  3. __DIR__ 需要 5.3+,需改为:dirname(__FILE__)
  4. 声明类变量为 heredoc 需要 5.3+,需改为普通的字符串定义;
  5. PHP5.2 不支持 $a = $a ?: $b;,需改为:$a = $a ? $a : $b;
  6. 没有 SQLite3 类,可以用一堆 sqlite_opensqlite_query 之类的函数,或 SQLiteDatabase 替代。
  7. error_reporting 时,没有 E_DEPRECATEDE_USER_DEPRECATED
    参考:https://php.net/manual/zh/errorfunc.constants.php

花了一下午才弄好,也是填坑填大发了,之前还是有蛮多地方欠考虑(毕竟没有专门做 PHP 这块,缺乏这些细节的了解(真是个好借口))。

另外还想吐槽一下:

  1. PHP:虽然我依旧觉得 PHP 很优秀,新手友好,但和 Python 比,还是不如,编程体验差很多。
  2. Discuz:应该被淘汰了吧,为什么还有这么多人用,真是的!