PHP官方弃用了哪些旧函数

wen PHP项目 1

本文目录导读:

PHP官方弃用了哪些旧函数

  1. PHP 7.x 弃用的主要函数
  2. PHP 8.x 弃用或移除的函数
  3. 推荐替代方案
  4. 检查代码中的弃用函数

PHP 官方在不同版本中弃用了许多旧函数,以下是主要版本中弃用或移除的关键函数列表:

PHP 7.x 弃用的主要函数

PHP 7.0

  • mysql_* 系列函数(如 mysql_connect, mysql_query 等)
  • mcrypt_* 系列函数
  • ereg / ereg_replace 正则函数
  • split 函数
  • set_socket_blocking 函数
  • call_user_method / call_user_method_array

PHP 7.1

  • mcrypt_* 函数(正式弃用)
  • setlocale 的常量 INTL 相关

PHP 7.2

  • create_function
  • __autoload
  • each 函数
  • assert() 字符串模式
  • mbstring.func_overload 设置

PHP 7.3

  • define()__autoload 中不推荐
  • image2wbmp 函数
  • mbregex 编码模式

PHP 7.4

  • real 类型转换
  • money_format 函数
  • get_magic_quotes_gpc / get_magic_quotes_runtime
  • implode() 参数顺序反转
  • (real) 类型转换

PHP 8.x 弃用或移除的函数

PHP 8.0(已移除)

  • create_function(完全移除)
  • each(完全移除)
  • fgetss 函数
  • gd_info() 部分常量
  • get_magic_quotes_* 系列
  • money_format
  • ldap_* 部分函数
  • socket_* 部分函数

PHP 8.1

  • mysqli_report() 模式改变
  • strftime / gmstrftime
  • date_sunrise / date_sunset 的旧签名
  • mhash* 函数

PHP 8.2

  • utf8_encode / utf8_decode
  • mb_str_split 的函数签名变更
  • locale_get_display_variant
  • snmp* 部分函数

PHP 8.3(最新弃用)

  • random_inttrue 参数变体
  • ldap_exop 的部分用法

推荐替代方案

弃用函数 推荐替代
mysql_* mysqli_* 或 PDO
mcrypt_* OpenSSL 或 Sodium
ereg / split preg_match / preg_split
create_function 匿名函数(Closure)
each foreach 循环
utf8_encode mb_convert_encoding
strftime date 或 IntlDateFormatter
money_format NumberFormatter

检查代码中的弃用函数

可以使用以下工具或方法检查:

# 使用 Composer 工具
composer require --dev dsa/php-deprecation-fixer
# 使用 PHPStan 静态分析
vendor/bin/phpstan analyse --level=max src/

建议定期检查 PHP 官方文档和 RFC,了解最新的弃用情况和迁移建议,对于遗留代码,应优先考虑替换这些弃用函数,以确保代码的安全性和可维护性。

抱歉,评论功能暂时关闭!