PHP 进化史 — 从 v5.6 到 v8.0

在此篇文章中,我们将用 15 分钟对 PHP v7.x 版本更改进行简要回顾。

PHP 7.3 版本发布后,为了更好地理解这门广泛流行的编程语言的新特性和优化之处,我决定详细地研究下 PHP 开发:正在开发什么以及其开发方向。

在查看了 PHP 在 PHP 7.x 版本开发过程中实现的一系列特性的简要列表之后,我决定自己整合这个列表作为一个很好的补充,我相信也会有人觉得有用的。

我们将从 PHP 5.6 作为基准开始,研究添加或者更改了哪些内容。同时,我也在每一个被提及到的特性处添加了直达相关官方文档的链接,所以如果你有兴趣深入阅读,请随意。…

令人期待的 PHP7.4

PHP 7.4 是下一个 PHP 7 的次要版本,预计将于 2019 年 11 月 28 日发布到 General Availability。让我们来了解下 PHP 7.4 新增的功能,这些新功能将使 PHP 更快,更可靠。

当然,更令我期待是 PHP 8。因为 JIT 的一些提议,已经获得批准,这可能成为 PHP 的又一个里程碑。…

PHP 7.4 FFI(外部函数接口):您需要知道的

PHP外部函数接口:FFI,是一个PHP扩展,允许您轻松地将一些外部库包含到PHP代码中。这意味着可以直接在PHP中使用C,Go,Rust等共享库​​,而无需在C中编写PHP扩展。这个概念在其他语言(如Python或Go)中已经存在多年了。

UUID生成

让我们从一个小例子开始:UUID生成。

使用PHP,有几种生成UUID的方法。最好的方法是使用PECL UUID扩展名。您可以在GitHub上阅读其代码。这个PHP扩展负责将PHP函数绑定到libuuid。要使其正常工作,您必须在系统上安装libuuid(不必担心,几乎总是这样)和PECL。

这就是我们从PHP用户代码调用uuid_create()时发生的情况:

+---------------------+
   |    your PHP code    |
   +---+-------------^---+
       v             ^
   +---v-------------+---+
   |     PHP engine      |
   +---+-------------^---+
       v             ^
   +---v-------------+---+
   |      UUID ext       |
   +---+-------------^---+
       v             
    

PHP 7.4中的类型化属性

类型化类属性已在PHP 7.4中添加,并为PHP的类型系统提供了重大改进。这些更改是完全可选的,并且不破坏以前的版本。

在本文中,我们将深入研究该功能,但首先让我们首先总结最重要的要点:

  • 它们自PHP 7.4起可用,该版本于2019年11月发布。
  • 他们只在类 上使用,并且需要访问修饰符:publicprotectedprivate; 或var
  • 允许所有类型,除了voidcallable

他们的实际情况是这样的:…

    

PHP 7.4中的箭头函数

短闭包(也称为箭头函数)是用PHP编写短函数的一种方式。当将闭包传递给类似array_maparray_filter的函数时,此符号很有用。

这是他们的样子:

// A collection of Post objects
$posts = [/* … */];

$ids = array_map(fn($post) => $post->id, $posts);

以前,您必须编写以下代码:…

    

从PHP7.0 升级到PHP7.4

一.新功能

1.可空类型

现在,可以通过在类型名称前面加上问号来将参数和返回值的类型声明标记为可为空。这表示和指定的类型一样,NULL可以分别作为参数传递或作为值返回。

function test(?string $name)
{
var_dump($name);
}

上面的$name 可为字符串或null.

2.void函数

引入了void返回类型。以void声明为返回类型的函数必须完全省略其return语句,或者使用空的return语句。NULL不是void函数的有效返回值。

 function swap(&$left, &$right): void
{
if ($left === $right) {
return;
}$tmp = $left;
$left = $right;
$right = $tmp;
}
    

PHP框架最新性能压力测试比较

关闭debug,无优化情况下测试。

PHP框架最新hello world压力测试 结果ab -n 10000 -c 100 -k $url:
laravel 6.5:700rps.
symfony4.4 :1300 rps.
thinkphp6.0 : 2200 rps.
ubiquity 2.3 :3300rps.
phalcon 3.4.4 :6100rps.

 

PHP框架最新模板渲染hello world压力测试 结果ab -n 10000 -c 100 -k $url:
laravel 6.5:700rps.
symfony4.4 :1200 …