PHP 随着版本的迭代,不断对一些函数进行废弃处理(deprecated),目的是改进语言的安全性、性能和现代化。以下是一些常见被废弃的函数或功能的总结,不同 PHP 版本中废弃的函数可能不同:
PHP 5.x 废弃的函数
mysql_* 系列函数(如 mysql_connect, mysql_query 等)
替代方案:使用 mysqli_* 或 PDO。
废弃版本:PHP 5.5.0,移除于 PHP 7.0.0。
ereg 系列函数(如 ereg, ereg_replace)
替代方案:使用 preg_match, preg_replace。
废弃版本:PHP 5.3.0,移除于 PHP 7.0.0。
mcrypt_* 系列函数(如 mcrypt_encrypt, mcrypt_decrypt)
替代方案:使用 openssl_* 系列函数。
废弃版本:PHP 7.1.0,移除于 PHP 7.2.0。
split 函数
替代方案:使用 explode 或 preg_split。
废弃版本:PHP 5.3.0,移除于 PHP 7.0.0。
call_user_method 和 call_user_method_array
替代方案:使用 call_user_func 或 call_user_func_array。
废弃版本:PHP 4.1.0,移除于 PHP 5.0.0。
PHP 7.x 废弃的函数
each 函数
替代方案:使用 foreach。
废弃版本:PHP 7.2.0,移除于 PHP 8.0.0。
create_function
替代方案:使用匿名函数(function 或 fn)。
废弃版本:PHP 7.2.0,移除于 PHP 8.0.0。
intval 的第三个参数 base(大于 36 或小于 2)
问题描述:传递无效的基数将导致废弃警告。
废弃版本:PHP 7.4.0。
mbregex_encoding
替代方案:使用 mb_internal_encoding。
废弃版本:PHP 7.3.0,移除于 PHP 8.0.0。
implode 的参数顺序
推荐使用 implode($glue, $pieces),而不是反过来。
废弃版本:PHP 7.4.0(不严格废弃,但会警告)。
PHP 8.x 废弃的函数
动态属性(对象未声明的属性)
替代方案:使用显式声明的属性或 __get/__set 魔术方法。
废弃版本:PHP 8.2.0。
utf8_encode 和 utf8_decode
替代方案:使用 mb_convert_encoding。
废弃版本:PHP 8.2.0。
部分 GD 函数(如 image2wbmp)
替代方案:GD 扩展的更新函数。
废弃版本:PHP 8.0.0。
filter_var() 的 FILTER_SANITIZE_STRING
替代方案:使用自定义的正则清理。
废弃版本:PHP 8.1.0。