
PHP 8.2预计将于今年11月发布,最新的稳定版本是PHP 8.1.5。虽然现在还为时过早,但对更新的接受程度参差不齐。
但是,知道会发生什么可以帮助您。通过了解新功能和不推荐使用的功能,您可以了解更新可能如何影响开发。这些知识还可以帮助您为最终发布做好准备。
在这篇文章中,我们将回顾最新的PHP版本。然后我们将介绍PHP 8.2中的新功能并讨论发布时间表。
PHP是WordPress的主要编程语言。它在将数据库中的数据转换为站点访问者的HTML网页方面起着至关重要的作用。
作为网站所有者或开发人员,您可能已经熟悉保持WordPress核心、主题和插件更新的重要性。但是,让您的PHP保持最新也很重要。
目前,WordPress建议至少使用PHP 7.4。旧版本不再获得对安全更新和错误修复的积极支持。因此,升级到PHP的最新稳定版本可以带来更好的站点安全性、增强的性能和更高级别的支持(我们强调稳定,因为WordPress尚不完全兼容PHP 8.0,因此请谨慎处理更新)。
PHP 7.4引入了类型化属性、下划线数字分隔符和各种改进。从那时起,已经发布了更多的。
2020年11月发布的PHP 8.0带来了一些基本功能。除了语法和性能增强之外,该版本还包括:
一年后出现了PHP 8.1,这是最新的主要PHP版本。此更新包括重要功能,例如:
掌握最新版本的PHP有助于提高网站的性能和安全性。但是,重要的是要知道在升级之前会发生哪些变化。如果您有兴趣测试PHP 8.2的当前状态,可以通过进行。
PHP 8.2预计将于2022年底发布。这是,计划于2022年11月24日发布通用版本 (GA):
根据PHP网站上的官方文档,应该有一些新特性和不推荐使用的功能。深入了解更详细的。
PHP 8.2将包含一个名为的新函数。它将重置memory_get_peak_usage函数返回的峰值内存使用量。
对于涉及多次调用操作并记录每次迭代的峰值内存使用情况的情况,此功能将很有帮助。开发人员将能够使用此新功能在请求的生命周期内的任何给定时间重置峰值内存使用量。
在PHP 8.1中引入,只读属性将在PHP 8.2中扩展以添加语法糖,以便所有类属性一次都是只读的:
readonly class Post
{
public function __construct(
public string $title,
public Author $author,
public string $body,
public DateTime $publishedAt,
) {}
}
这将防止将动态属性添加到类中。
在PHP 8.2中,false的返回类型将作为独立类型使用,而不是严格的联合类型,用于发生错误时,这已经是可能的:
function alwaysFalse(): false
{
return false;
}
null类型也是如此。例如,作为独立类型,与以前不同,NullPost::getAuthor()将只能返回null。
将在PHP 8.2中被弃用,导致PHP 9.0出现 ErrorException。这些属性是在对象上设置的:
class Post
{
public string $title;
}
// …
$post->name = 'Name';
动态属性允许在没有严格的类声明的情况下创建类(例如,值对象)时具有灵活性。对于依赖动态属性的开发人员来说,他们的弃用可能会成为一个问题,因为这会促使他们更多地进行静态分析。出于这个原因,一些开发人员对PHP 8.2的这种变化感到担忧。
但是,使用 __get 和 __set 的类仍将支持动态属性,stdClass的对象也将如此。
或者,开发人员可以在这些属性的类上使用在全局命名空间中声明的新:
#[AllowDynamicProperties]
class User() {}
$user = new User();
$user->foo = 'bar';
虽然不建议这样做,但另一种选择是禁用弃用警告。
PHP 8.2将包含对preg_* 函数系列的的支持。使用时,除了已命名的捕获组之外,任何具有()meta-characters的组都不会捕获。本质上,结果与将每个组标记为非捕获相同。
此更改背后的原因是修饰符简化了多个组的复杂正则表达式。开发人员可以将所有组标记为非捕获,而不是将每个组都营销为非捕获。然后,他们可以选择并命名需要捕获的特定组。
许多开发人员使用从代码库跟踪堆栈跟踪和生产错误的服务。这些服务可以在出现问题时通知用户。例如,在调试应用程序时跟踪调用堆栈很有帮助。
但是,有时堆栈跟踪可能包含敏感信息,例如用户名和密码。PHP 8.2将包含一个,当出现问题时,该属性将防止此信息包含在堆栈跟踪中:
function test(
$foo,
#[\SensitiveParameter] $bar,
$baz
) {
throw new Exception('Error');
}
test('foo', 'bar', 'baz');
PHP 8.2将使用敏感参数从堆栈跟踪中编辑私有信息,使其更加安全。这些参数确保数据不会出现在错误日志中。请注意,此属性仅可用于参数。
有多种 *** 可以使用PHP在字符串中嵌入变量。但是,PHP 8.2将弃用两种 *** 。之一个是在字符串中使用 ${}:
"Hello ${world}";
第二个是使用 ${} (变量):
"Hello ${(world)}";
这对开发人员来说可能不是一个重大问题,因为两种更流行的字符串插值 *** 仍然有效。
另一个不推荐使用的更改是。有多种 *** 可以在 PHP 中创建可调用对象。可以使用 $callable() 语法、user_call_func(/a_array) 或使用带有回调的函数调用带或不带参数的函数。
已弃用的可调用模式包括以下内容:
$callable = "self::method"; $callable = "parent::method"; $callable = "static::method"; $callable = ["self", "method"]; $callable = ["parent", "method"]; $callable = ["static", "method"]; $callable = ["MyClass", "MyParentClass::myMethod"]; $callable = [new MyClass(), "MyOtherClass::myMethod"];
从PHP 8.2开始,调用上述任何一个都将导致以下弃用通知:
class Test {
public static function myMethod(): void {
echo "Called";
}
public static function call(): void {
$callable = 'self::myMethod';
call_user_func($callable);
}
}
$callable = Test::call();
// "Called";
但是,将这些可调用对象传递给is_callable函数或将它们与可调用参数类型一起使用不会生成弃用消息。为了防止出现弃用通知,开发人员可以使用::class 魔术 *** 将可调用代码中的parent、self和static关键字转换为各自的类名。
更改背后的部分原因是允许将可调用对象用于类型化属性。它使它们不那么依赖于上下文。
过去,PHP支持两个库来连接MySQL数据库:mysqlnd和libmysql。自PHP 5.4起,前者已成为默认库。但是,可以通过扩展编译MySQLi。
从PHP 8.2开始,编译MySQLi扩展。尝试这样做会导致配置错误:
./configure --with-mysqli=FOO
不再支持将mysqli与外部库链接
这不太可能对开发人员造成任何重大错误。但是,通过LDAP和SASL自动重新连接和身份验证支持libmysql支持的两个mysqlnd不可用的更大功能。
作为开发人员,必须针对即将发布的PHP版本测试您的代码。在这种情况下,开发人员应尽快开始针对PHP 8.2测试他们的代码,以确保您的代码在更新时不会破坏用户的站点。
使用宝塔面板,您可以快速地创建一个FTP管理账户,对网站文件进行管理。但有必要提醒大家的是,使用FTP远不如使用SFTP安全,你可以查看文章“”进一步了解两者之间的差异。 此外,宝塔面板的文件管理模块其实已经能够满足站长的大部分文件管理需求。当然,如果你非得要使用FTP管理服务器文件,可以参照以下...
宝塔面板另外一个特质是,你无需通过Linux命令行来查看服务器各项指标状况,即可以阿里云服务器类似的可视化图表,查看资源使用、负载、CPU占用及内容使用百分比等指标。 默认监控是关闭,有需要的,可以开启,监控数据默认保存30天,可以自行修改,默认监控数据保存在日志,可手动清理该日志。 监控管理,...
JavaScript是世界上最流行的编程语言之一。今天,它为数百万个网站提供支持,并吸引了成群的开发人员和设计人员为Web构建功能。如果您是编程新手,那么 JavaScript很容易成为之一。 在最初的20年里,JavaScript主要用于客户端脚本。由于JavaScript只能在<scr...
对于初学者和那些刚刚进入WordPress开发的人来说,PHP是您可以开始的最佳起点之一。这是一种超级简单直接的语言,使其成为之一,因此相当容易上手,它构成了在线开发的支柱。另外,如果你想在WordPress后端工作,你肯定需要学习它。 但是,如果您不想在昂贵的大学课程上花费数月或数年时间怎么...
美国劳工统计局估计在美有超过软件开发人员。根据2021年的数据,其中,这是世界上使用最广泛的五种编程语言之一。 自然,学习Java并成为Java开发人员对于任何对软件开发感兴趣的人来说都是明智的职业选择。 在本综合指南中,您将学习成为Java开发人员所需的一切知识。我们将分解您需要的技能、工...
近年来,Web应用程序和网站的开发变得越来越简单。即使是我们当中最受技术挑战的人也已经相当熟练地使用WordPress和Wix等产品。 对于更高级的开发人员,有许多工具可以帮助简化开发过程。这些工具中最有用的工具之一是Laravel。 本文回答了“什么是Laravel?”这个问题。通过将其分...