PHP

[PHP] 祝!PHP7.2.0リリース!

More than 1 year has passed since last update.


PHP7.2.0

11月30日にPHP7.2.0がリリースとなりました!

今日は7.2.0で追加された、いくつかの新機能に注目したいと思います!

[http://php.net/manual/ja/migration72.php:title]


object 型の追加

新たに object型 が追加されました。

そして、型宣言 / 返り値の型 に指定することが出来るようになりました。


サンプルコード


<?php

function test(object $obj) : object
{
    return new SplQueue();
}

test(new StdClass());


abstractメソッドのオーバーライドが可能に

abstractメソッドのオーバーライドが可能になりました。

<?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」追加

パスワードハッシュに「Argon2」が選択できるようになりました。

[https://ja.wikipedia.org/wiki/Argon2:title]

password_ 系の関数で使用可能。


  • PASSWORD_ARGON2I

  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST

  • PASSWORD_ARGON2_DEFAULT_TIME_COST

  • PASSWORD_ARGON2_DEFAULT_THREADS


型宣言の省略

継承したメソッドの型宣言を省略できるようになりました。

<?php

interface A
{
public function Test(array $input);
}

class B implements A
{
public function Test($input){} // 型宣言の省力が可能
}


名前空間のuse宣言でカンマが使用可能に

PHP7.0で追加されたuse宣言をまとめて行える機能に、

「Trailing Comma」、つまり「最後に余分なコンマを打っても動く」ようになりました。

<?php

use Foo\Bar\{
Foo,
Bar,
Baz,
};


number_format()に負数を渡した時の挙動の変化

number_format()に負数を与えた場合の挙動が変化しました。

例えば「-0.01」の負数の少数値を渡した時、以前なら「-0」が返されたが、

PHP7.2からは「0」が返されるようになりました。

<?php

echo number_format(-0.01); // 0 が返されるようになった


配列からオブジェクトへのキャスト後で数値のキーにアクセス可能に

配列をオブジェクトにキャストした後、

数値キーに対してアクセス出来るようになりました。

以前は文字列のキーのみアクセス可能でした。

<?php

// array to object
$arr = [0 => 1];
$obj = (object)$arr;
var_dump(
$obj,
$obj->{'0'}, // アクセス出来るようになった
$obj->{0} // アクセス出来るようになった
);


count()できない場合WARNINGを吐く

count()にカウント出来ない型を渡すとWARNINGが吐かれるようになった。

count(1);  // WARNING

count("apple"); // WARNING
count([1, 2]); // 2

今回調べたのは以上となります!

正直、PHP7.0やPHP7.1の時ほどの驚きは少ないですね。

PHP7.1から10%速度改善しているそうですが、いかほどのものか。

個人的にはプロパティの型宣言が出来るようになって欲しい!!