こんにちは。村井です。
さて、今回はphpです。
昨年末にphp7が出ました。
php5からかなり間の空いたメジャーバージョンアップです。
最新のRedMonkのランキングでもphpは3位に入ってます。まだまだ使ってる人口は多いようですね。
redmonk.com
私が最初に触ったプログラム言語はphpなのですが、そのせいか今だに好きな言語の一つです。
とかいいつつ、php4以降触ってませんでしたがw
いい機会なので、php7の新機能を見つつ触れてみたいと思います。
まず、Macでのphp7の開発環境はMAMPを使いました。
MAMP3.5でphp7が使えます。
homebrewでphpenv入れてやろうと思ったけど色々あってやめました。
(やるなら、anyenvでphpenv管理した方がいいかも。rbenv入れてる人なら特に)
スカラー型宣言
php7になり、intやstringなどの基本的な型も指定できるようになったようです。
(php5まではarrayなどには出来た)
以下はデフォルトの自動変換 (coercive) モード
<?php function int(int $num){ return $num; } var_dump(int(1)); var_dump(int("1")); var_dump(int("あ")); ?>
int(1) int(1)と表示されます。 「あ」は型違いで表示されません。 2つ目の1はstringですが、デフォルトモードだと1と自動変換されて表示されます。
以下は厳密に判断するstrictモード
<?php declare(strict_types=1); function int(int $num){ return $num; } var_dump(int(1)); var_dump(int("1")); var_dump(int("あ")); ?>
先頭にdeclare(strict_types=1);を書くと、厳密な型宣言となります。
つまり、ファイル単位で行うんですね。
そして、結果はint(1)だけです。
2つ目の1は厳密な型宣言をされていることにより、表示されません。
戻り値の型宣言
そのまんまです。
戻り値に型宣言が使えるようになりました。
<?php function int_string() : string{ return 1; } function string_int() : int{ return "あ"; } var_dump(int_string()); var_dump(string_int()); ?>
デフォルトモードなので、ret_stringの方は1をstringにしてくれます。
strictモードにすると、どちらもエラーとなります。
他にもnull 合体演算子 (??) がシンタックスシュガーとして追加されたりなど、
新機能はまだまだあるんですがこの辺で。