- PHP 教程
- PHP - 首页
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 特性
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP - 数据类型
- PHP - 类型转换
- PHP - 类型混合
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件与 I/O
- PHP - 数学函数
- PHP - Heredoc 和 Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期与时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符
- PHP - 算术运算符
- PHP - 比较运算符
- PHP - 逻辑运算符
- PHP - 赋值运算符
- PHP - 字符串运算符
- PHP - 数组运算符
- PHP - 条件运算符
- PHP - 展开运算符
- PHP - 空值合并运算符
- PHP - 宇宙飞船运算符
- PHP 控制语句
- PHP - 决策制定
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP - 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - Do…While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值传递
- PHP - 按引用传递
- PHP - 默认参数
- PHP - 命名参数
- PHP - 可变参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量作用域
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头函数
- PHP - 可变函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 文件处理
- PHP - 文件处理
- PHP - 打开文件
- PHP - 读取文件
- PHP - 写入文件
- PHP - 文件是否存在
- PHP - 下载文件
- PHP - 复制文件
- PHP - 追加文件
- PHP - 删除文件
- PHP - 处理 CSV 文件
- PHP - 文件权限
- PHP - 创建目录
- PHP - 列出文件
- 面向对象 PHP
- PHP - 面向对象编程
- PHP - 类和对象
- PHP - 构造函数和析构函数
- PHP - 访问修饰符
- PHP - 继承
- PHP - 类常量
- PHP - 抽象类
- PHP - 接口
- PHP - 特性
- PHP - 静态方法
- PHP - 静态属性
- PHP - 命名空间
- PHP - 对象迭代
- PHP - 封装
- PHP - Final 关键字
- PHP - 重载
- PHP - 克隆对象
- PHP - 匿名类
- PHP Web 开发
- PHP - Web 概念
- PHP - 表单处理
- PHP - 表单验证
- PHP - 表单邮件/URL
- PHP - 完整表单
- PHP - 文件包含
- PHP - GET 和 POST
- PHP - 文件上传
- PHP - Cookie
- PHP - Session
- PHP - Session 选项
- PHP - 发送邮件
- PHP - 净化输入
- PHP - Post-Redirect-Get (PRG)
- PHP - 闪存消息
- PHP 高级
- PHP - MySQL
- PHP.INI 文件配置
- PHP - 数组解构
- PHP - 编码规范
- PHP - 正则表达式
- PHP - 错误处理
- PHP - Try…Catch
- PHP - Bug 调试
- PHP - 针对 C 开发人员
- PHP - 针对 PERL 开发人员
- PHP - 框架
- PHP - Core PHP 与框架
- PHP - 设计模式
- PHP - 过滤器
- PHP - JSON
- PHP - 异常
- PHP - 特殊类型
- PHP - 哈希
- PHP - 加密
- PHP - is_null() 函数
- PHP - 系统调用
- PHP - HTTP 认证
- PHP - 交换变量
- PHP - Closure::call()
- PHP - 过滤后的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 期望
- PHP - Use 语句
- PHP - 整数除法
- PHP – 已弃用功能
- PHP - 已移除的扩展和 SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 进程
- PHP - PDO 扩展
- PHP - 内置函数
- PHP 有用资源
- PHP - 速查表
- PHP - 问答
- PHP - 快速指南
- PHP - 在线编译器
- PHP - 有用资源
- PHP - 讨论
PHP – 已弃用功能
随着每个新版本的发布,都会添加一些新功能,同时也会删除一些被认为已过时的功能。在本章中,我们将了解 PHP 5 版本之后弃用的功能。
PHP 7 中弃用
PHP 4 样式构造函数
PHP 4 样式构造函数是指方法名称与定义它们的类名称相同,现在已弃用,将来将被移除。如果 PHP 4 构造函数是类中定义的唯一构造函数,则 PHP 7 将发出 E_DEPRECATED。实现 __construct() 方法的类不受影响。
示例
请查看以下示例 -
<?php class A { function A() { print('Style Constructor'); } } ?>
它在浏览器上产生以下输出 -
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; A has a deprecated constructor in...
对非静态方法的静态调用
对非静态方法的静态调用已弃用,将来可能会被移除。
示例
请查看以下示例 -
<?php class A { function b() { print('Non-static call'); } } A::b(); ?>
它在浏览器上产生以下输出 -
Deprecated: Non-static method A::b() should not be called statically in... Non-static call
password_hash() 的 salt 选项
password_hash() 函数的 salt 选项已弃用,以便开发人员不再生成自己的(通常是不安全的)salt。当开发人员未提供 salt 时,函数本身会生成一个加密安全的 salt - 因此不再需要自定义 salt 生成。
capture_session_meta SSL 上下文选项
capture_session_meta SSL 上下文选项已弃用。SSL 元数据现在通过 stream_get_meta_data() 函数使用。
ext/mcrypt
mcrypt 扩展已弃用,建议使用 OpenSSL。
未加引号的字符串
不存在的全局常量的未加引号的字符串被视为其自身字符串。此行为过去会发出 E_NOTICE,但现在会发出 E_WARNING。在 PHP 的下一个主要版本中,将改为抛出 Error 异常。
__autoload() 方法
__autoload() 方法已弃用,因为它不如 spl_autoload_register()(因为它无法链接自动加载器),并且两种自动加载样式之间没有互操作性。
create_function() 函数
鉴于此函数存在安全问题,现在已弃用。首选的替代方法是使用匿名函数。
each() 函数
此函数会导致某些语言更改的实现问题。因此,它已弃用。
不区分大小写的常量
不区分大小写的常量的声明已弃用。现在将 true 作为第三个参数传递给 define() 将生成弃用警告。
(real) 和 is_real() 函数
(real) 转换已弃用,请改用 (float)。is_real() 函数也已弃用,请改用 is_float()。
"parent" 关键字
在没有父类的类中使用 parent 已弃用,将来会抛出编译时错误。目前,只有在运行时访问父类时才会生成错误。
PHP 8 中弃用
如果带有默认值的参数后跟必需参数,则默认值无效。从 PHP 8.0.0 开始,这已弃用,通常可以通过删除默认值来解决,而不会更改功能 -
<?php function test($a = [], $b) {} // Before function test($a, $b) {} // After ?>
此规则的一个例外是表单 Type $param = null 的参数,其中 null 默认值使类型隐式可为空。此用法仍然允许,但建议改用显式可为空的类型 -
<?php function test(A $a = null, $b) {} // Still allowed function test(?A $a, $b) {} // Recommended ?>
调用 get_defined_functions() 并将 exclude_disabled 显式设置为 false 已弃用,并且不再有任何作用。get_defined_functions() 永远不会包含禁用的函数。
返回 true 或 false 的排序比较函数现在将抛出弃用警告,应替换为返回小于、等于或大于零的整数的实现。
<?php // Replace usort($array, fn($a, $b) => $a > $b); // With usort($array, fn($a, $b) => $a <=> $b); ?>
隐式不兼容的 float 到 int 转换
现在已弃用导致精度损失的 float 到 int 的隐式转换。这会影响数组键、强制模式下的 int 类型声明以及对 int 进行运算的运算符。
在特性上调用静态元素
在特性上直接调用静态方法或访问静态属性已弃用。静态方法和属性只能在使用特性的类上访问。
日期函数
date_sunrise() 和 date_sunset() 已弃用。请改用 date_sun_info()。
strptime() 已弃用。请改用 date_parse_from_format()(用于与区域设置无关的解析)或 IntlDateFormatter::parse()(用于与区域设置相关的解析)。
strftime() 和 gmstrftime() 已弃用。您可以改用 date()(用于与区域设置无关的格式化)或 IntlDateFormatter::format()(用于与区域设置相关的格式化)。
动态属性
动态属性的创建已弃用。请改用允许动态属性的 stdClass。