2022 年的 PHP–激动人心的时代即将到来,让我们来看看现代的 PHP

2024-05-24 23:48

本文主要是介绍2022 年的 PHP–激动人心的时代即将到来,让我们来看看现代的 PHP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是我第四次每年写一篇“PHP in 20XX”的帖子,我必须承认我从来没有像今年这样兴奋过:我们已经看到 PHP 添加了一些很棒的新特性,比如注解,枚举、属性提升和纤程;最重要的是,静态分析社区正在取得巨大进步,我个人最喜欢的功能是 PhpStorm 现在在编写代码时支持泛型。

激动人心的时代即将到来,让我们来看看现代 PHP!


#PHP 8.1

我忍不住从一个多月前发布的最新 PHP 版本开始列出这个列表。我的主要项目已经准备好在生产环境中在 PHP 8.1 上运行,我必须承认我对此感到非常兴奋。您可能不会期望它会出现在一个次要版本中——没有重大的更改,只添加了弃用通知——但 PHP 8.1 带来了一些非常酷的特性。这是我个人认为的前三名。

枚举现在内置于PHP语言中:

enum Status
{case draft;case published;case archived;public function color(): string{return match($this) {Status::draft => 'grey',   Status::published => 'green',   Status::archived => 'red',   };}
}

我们可以在初始化器中使用new 关键字:

class PostStateMachine
{public function __construct(private State $state = new Draft(),) {}
}

而且,当然,还有只读属性:

class PostData
{public function __construct(public readonly string $title,public readonly PostState $state,public readonly DateTimeImmutable $publishedAt,) {}
}

这与 PHP 8.0 的提升属性相结合,形成了一些非常干净的数据类。只是为了可视化显示其差异,以上是用 PHP 5.6 编写的具有相同功能的类:

class PostData
{/** @var string */private $title;/** @var State */private $state;/** @var \DateTimeImmutable|null */private $publishedAt;/*** @param string $title * @param State $state * @param \DateTimeImmutable|null $publishedAt */public function __construct($title,$state,$publishedAt = null) {$this->title = $title;$this->state = $state;$this->publishedAt = $publishedAt;}/*** @return string */public function getTitle(){return $this->title;    }/*** @return State */public function getState() {return $this->state;    }/*** @return \DateTimeImmutable|null */public function getPublishedAt() {return $this->publishedAt;    }
}

你明白我为什么兴奋吗?PHP 在每个版本中都获得了这些很棒的语法改进。写PHP只会越来越有趣!当然,现代 PHP 中添加了更多功能,如果您想快速了解一下,请查看我的 3 分钟视频,或者您可以滚动继续阅读 — 2022 年 PHP 将更加激动人心!

https://www.youtube.com/embed/W3p8BGeiTwQ

#静态分析

我已经简单地提到过:PHP 中的静态分析正在显著增长。

  • 像 Laravel 这样的框架越来越多地采用静态类型(编写代码和文档块的唯一目的是帮助静态分析);
  • PhpStorm添加了对泛型类型的支持,如果您可以编写泛型代码并让您的 IDE您编写它时理解它,那将是一件大事;
  • PhpStan和psalm在不断增长;
  • 我自己的关于静态分析的时事通讯系列在 1500 多名参与者中做得很好,越来越多的人对这个话题感兴趣。

如果您只想快速了解为什么静态分析在 PHP 中很重要,以及为什么我对此如此兴奋,您可以查看这篇博文:“我们不需要运行时类型检查”。

#PHP 基金会

两个月前,PHP世界得到了一些相当大的消息,甚至可能是2021年最大的新闻:Nikita,最活跃的核心维护者之一,正在辞职到LLVM去工作,但与此同时,还有一项由几家大公司支持的新举措,最终使核心开发可持续。

简而言之,PHP 基金会是一个非营利组织,其唯一目标是资助 PHP 核心开发。该计划由 JetBrains 推动,他们已经向该项目承诺了 100,000 美元。与其他许多人一样,他们现在已经筹集了 329,920.75 美元;一个好的开始!

这笔钱用于资助核心开发者,并为以前无法从事PHP工作的人打开了大门。您可以在JetBrains 的博客文章中阅读有关基金会使命和目标的更多信息。

#生态系统

就像每年一样,我不能不提到 Packagist,现在有超过 300 万个注册版本和超过 300.000 个包。如您所见,PHP生态系统不断发展壮大,2022 年也不例外。

哦,顺便说一句,就在最近,Packagist 通过了处理超过 500 亿次安装的里程碑。恭喜Packagist!

#异步 PHP

异步社区中的一个令人兴奋的发展是,来自 Amp 和 ReactPHP(两个主要的异步参与者)的开发人员齐心协力制作了一个与fiber兼容的事件循环实现,称为Revolt PHP。

与整个社区相比,异步 PHP 仅被一小部分人使用;但是仍然很高兴看到异步社区变得强大并拥抱现代 PHP。

#无服务器 PHP

我一直在关注的一个有趣的发展是无服务器 PHP。我的好友Matthieu Napoli的使命是让 PHP 开发人员了解这种相对较新的 PHP 使用方式,而且他似乎做得很好。您可以查看Bref,他的开源项目使无服务器 PHP 变得简单,或者查看他在 2022 年关于无服务器 PHP 的课程。

我自己没有任何用例,但我知道越来越多的人在生产环境中运行无服务器 PHP,所以它绝对值得关注。

#期待

那么今年呢?我很期待看到静态分析的发展方向,并且对与 PhpStorm 更好地集成感到特别好奇。我发现实时静态分析——在你编写代码进行静态分析——在开发阶段本身提供了更多的价值。

现在我有点担心Nikita已经下台了。他绝对不是唯一能够从事 PHP 核心工作的人,但在过去的几年中,他在 PHP 8.0 和 8.1 方面做了大量工作。我希望 PHP 基金会能尽快跟上步伐,明年有足够多的核心开发人员有时间从事 PHP 工作。PHP 8.2已经在开发中,虽然还没有起草很多 RFC。

我不认为2022年将是PHP最令人兴奋的一年,而是增加稳定性的一年。这没什么错。


这些是 2021 年对我个人而言最突出的事情,也让我对 2022 年的 PHP 感到兴奋:很棒的新语法、得益于 PHP 基金会的核心开发稳定性、静态分析变得越来越强大,以及许多整个社区的有趣发展。

原文:https://stitcher.io/blog/php-in-2022

这篇关于2022 年的 PHP–激动人心的时代即将到来,让我们来看看现代的 PHP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/999882

相关文章

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

内卷时代无人机培训机构如何做大做强

在当今社会,随着科技的飞速发展,“内卷”一词频繁被提及,反映了各行业竞争日益激烈的现象。对于无人机培训行业而言,如何在这样的时代背景下脱颖而出,实现做大做强的目标,成为每个培训机构必须深思的问题。以下是从八个关键方面提出的策略,旨在帮助无人机培训机构在内卷时代中稳步前行。 1. 精准定位市场需求 深入研究市场:通过市场调研,了解无人机行业的最新趋势、政策导向及未来发展方向。 明确目标

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json

如何将文件夹里的PHP代码放到一个文件里

find ./dir -name "*.php" -exec 'cat' {} \; > dir.out

PHP抓取网站图片脚本

方法一: <?phpheader("Content-type:image/jpeg"); class download_image{function read_url($str) { $file=fopen($str,"r");$result = ''; while(!feof($file)) { $result.=fgets($file,9999); } fclose($file); re

PHP防止SQL注入详解及防范

SQL 注入是PHP应用中最常见的漏洞之一。事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞。 一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。 对于攻击者来说,进行SQL注入攻击需要思考和试验,对数据库方案进行有根有据的推理非常有必要(当然假设攻击者看不到你的

PHP防止SQL注入的方法(2)

如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE”); DROP TA

PHP防止SQL注入的方法(1)

(1)mysql_real_escape_string – 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 使用方法如下: $sql = "select count(*) as ctr from users where username ='".mysql_real_escape_string($username)."' and password='". mysql_r

Linux系统安装php开发环境

Linux系统centos6.5 PHP5.6 MySQL5.6 Nginx1.7 yum安装依赖库 yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison \libtool-ltdl-devel li