object 型が新たに導入されました。 任意のオブジェクトに対する (反変) パラメータの型付けや (共変) 戻り値の型付けで使えます。
<?php
function test(object $obj) : object
{
return new SplQueue();
}
test(new StdClass());
読み込む共有モジュールを指定する際に、拡張子
(Unix なら .so
、Windows なら .dll
など)
を指定する必要がなくなりました。php.ini ファイルでの指定だけでなく
dl() 関数による指定でも同様です。
ある抽象クラスが別の抽象クラスを継承しているときに、 継承元クラスの抽象メソッドをオーバーライドできるようになりました。
<?php
abstract class A
{
abstract function test(string $s);
}
abstract class B extends A
{
// オーバーライドしましたが、パラメータの反変性や戻り値の共変性は維持しています。
abstract function test($s) : int;
}
パスワードハッシュ API に Argon2 が追加されました。次の定数が公開されています。
PASSWORD_ARGON2I
PASSWORD_ARGON2_DEFAULT_MEMORY_COST
PASSWORD_ARGON2_DEFAULT_TIME_COST
PASSWORD_ARGON2_DEFAULT_THREADS
PDO の文字列型が拡張され、 プリペアをエミュレートする際に NCHAR 型をサポートするようになりました。 以下の定数が追加されています。
PDO::PARAM_STR_NATL
PDO::PARAM_STR_CHAR
PDO::ATTR_DEFAULT_STR_PARAM
これらの定数を使うには、
PDO::PARAM_STR
とビット OR
で連結します。
<?php
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);
PDOStatement::debugDumpParams() メソッドが改良されて、 データベースに送信される SQL を表示できるようになりました。 これは、プレースホルダの内容をバインド変数の値で置き換えた後の生のクエリです。 この機能は、プリペア機能のエミュレートをデバッグしやすくするために用意されました (そのため、プリペア機能のエミュレートが有効になっているときしか使えません)。
LDAP 拡張モジュールが EXOP をサポートするようになりました。 以下の関数や定数が追加されています。
LDAP_EXOP_START_TLS
LDAP_EXOP_MODIFY_PASSWD
LDAP_EXOP_REFRESH
LDAP_EXOP_WHO_AM_I
LDAP_EXOP_TURN
ソケット拡張モジュールが、アドレス情報のルックアップや 接続、バインド、explainに対応するようになりました。 新しく追加されたのは、以下の四つの関数です。
メソッドをオーバーライドしたりインターフェイスを実装したりする際に、 元のパラメータの型指定を省略できるようになりました。 それでもリスコフの置換原則には違反していません。 パラメータの型は反変だからです。
<?php
interface A
{
public function Test(array $input);
}
class B implements A
{
public function Test($input){} // $input の型指定を省略
}
PHP 7.0 で導入されたグループ指定構文で、最後にカンマを付けられるようになりました。
<?php
use Foo\Bar\{
Foo,
Bar,
Baz,
};
proc_nice() 関数が Windows でも使えるようになりました。
pack() と unpack() が、 リトルエンディアンとビッグエンディアンの両方の float や double に対応するようになりました。
EXIF 拡張モジュールがより多くのフォーマットに対応するようになりました。 exif_read_data() 関数で画像をパースするときに、 今までよりも多くの独自タグが適切に変換されるようになります。 新たにサポートするようになったフォーマットは以下のとおりです。
また、exif_read_data() と exif_thumbnail() の第一引数にストリームを渡せるようになりました。
J
修飾子で PCRE_DUPNAMES を設定できるようになりました。
SQLite3::openBlob() が、BLOB フィールドを書き込みモードでオープンできるようになりました。 これまでは読み込みモードにしか対応していませんでした。
Oracle Database Transparent Application Failover (TAF) コールバック のサポートが追加されました。 TAF を使うと、データベースとの接続が切れたときに、 提議済みのデータベースに自動的に再接続できます。 TAF コールバックを使うと、 フェイルオーバー時の再接続を PHP アプリケーションから監視したり制御したりできるようになります。
暗号化されたアーカイブの読み書きができるようになりました (libzip 1.2.0 以降が必要です)。
ZipArchive クラスが Countable インターフェイスを実装するようになりました。
zip://
ストリームのコンテキストオプションに
'password'
を使えるようになりました。