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%速度改善しているそうですが、いかほどのものか。
個人的にはプロパティの型宣言が出来るようになって欲しい!!