這種新的對象類(lèi)型, object, 引進(jìn)了可用于逆變(contravariant)參數輸入和協(xié)變(covariant)返回任何對象類(lèi)型。
<?php
function test(object $obj) : object
{
return new SplQueue();
}
test(new StdClass());
擴展文件不再需要通過(guò)文件加載
(Unix下以.so
為文件擴展名,在Windows下以 .dll
為文件擴展名) 進(jìn)行指定??梢栽趐hp.ini配置文件進(jìn)行啟用, 也可以使用
dl() 函數進(jìn)行啟用。
當一個(gè)抽象類(lèi)繼承于另外一個(gè)抽象類(lèi)的時(shí)候,繼承后的抽象類(lèi)可以重寫(xiě)被繼承的抽象類(lèi)的抽象方法。
<?php
abstract class A
{
abstract function test(string $s);
}
abstract class B extends A
{
// overridden - still maintaining contravariance for parameters and covariance for return
abstract function test($s) : int;
}
Argon2 已經(jīng)被加入到密碼散列(password hashing) API (這些函數以
password_
開(kāi)頭), 以下是暴露出來(lái)的常量:
PASSWORD_ARGON2I
PASSWORD_ARGON2_DEFAULT_MEMORY_COST
PASSWORD_ARGON2_DEFAULT_TIME_COST
PASSWORD_ARGON2_DEFAULT_THREADS
當你準備支持多語(yǔ)言字符集,PDO的字符串類(lèi)型已經(jīng)擴展支持國際化的字符集。以下是擴展的常量:
PDO::PARAM_STR_NATL
PDO::PARAM_STR_CHAR
PDO::ATTR_DEFAULT_STR_PARAM
這些常量通過(guò)PDO::PARAM_STR
利用位運算OR
進(jìn)行計算:
<?php
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);
PDOStatement::debugDumpParams()方法已經(jīng)更新,當發(fā)送SQL到數據庫的時(shí)候,在一致性、行查詢(xún)(包括替換綁定占位符)將會(huì )顯示調試信息。這一特性已經(jīng)加入到模擬調試中(在模擬調試打開(kāi)時(shí)可用)。
LDAP 擴展已經(jīng)新增了EXOP支持. 擴展暴露以下函數和常量:
LDAP_EXOP_START_TLS
LDAP_EXOP_MODIFY_PASSWD
LDAP_EXOP_REFRESH
LDAP_EXOP_WHO_AM_I
LDAP_EXOP_TURN
sockets擴展現在具有查找地址信息的能力,且可以連接到這個(gè)地址,或者進(jìn)行綁定和解析。為此添加了以下一些函數:
重寫(xiě)方法和接口實(shí)現的參數類(lèi)型現在可以省略了。不過(guò)這仍然是符合LSP,因為現在這種參數類(lèi)型是逆變的。
<?php
interface A
{
public function Test(array $input);
}
class B implements A
{
public function Test($input){} // type omitted for $input
}
命名空間可以在PHP 7中使用尾隨逗號進(jìn)行分組引入。
<?php
use Foo\Bar\{
Foo,
Bar,
Baz,
};