LoginSignup
8
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-12-01

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%速度改善しているそうですが、いかほどのものか。

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

8
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3