补充*其他特性与变更

iterable伪类

现在引入了一个新的被称为iterable的伪类 (与callable类似)。 这可以被用在参数或者返回值类型中,它代表接受数组或者实现了

Traversable 接口的对象。 至于子类,当用作参数时,子类可以收紧父类的iterable类型到array或一个实现了Traversable的对象。对

于返回值,子类可以拓宽父类的array或对象返回值类型到iterable。

<?php
function iterator(iterable $iter)
{
    foreach ($iter as $val) {
        //
    }
}

ext/openssl 支持 AEAD

通过给 openssl_encrypt()openssl_decrypt() 添加额外参数,现在支持了AEAD (模式 GCM and CCM)。

通过Closure::fromCallable()将callables转为闭包

Closure新增了一个静态方法,用于将callable快速地 转为一个Closure 对象。

<?php
class Test
{
    public function exposeFunction()
    {
        return Closure::fromCallable([$this, 'privateFunction']);
    }

    private function privateFunction($param)
    {
        var_dump($param);
    }
}

$privFunc = (new Test)->exposeFunction();
$privFunc('some value');

以上例程会输出:

string(10) "some value"

异步信号处理

一个新的名为pcntl_async_signals()的方法现在被引入, 用于启用无需 ticks (这会带来很多额外的开销)的异步信号处理。

<?php
pcntl_async_signals(true); // turn on async signals

pcntl_signal(SIGHUP,  function($sig) {
    echo "SIGHUP\n";
});

posix_kill(posix_getpid(), SIGHUP);

以上例程会输出:

SIGHUP

HTTP/2 server push support in ext/curl

对服务器推送的支持现在已经被加入到 CURL 扩展中( 需要版本 7.46 或更高)。这个可以通过curl_multi_setopt()函数与新的常量CURLMOPT_PUSHFUNCTION来进行调节。常量CURL_PUST_OKCURL_PUSH_DENY也已经被添加进来,以便服务器推送的回调函数来表明自己会同意或拒绝处理。

Last updated