とっしぃのTech Memo

PHPとかサーバとか他色々言語のメモ的な。あとはたまにガジェットとか。

PHP7を軽くいじってみる

とっしぃです。

もうすぐ2015年も終わってしまうということで駆け込み投稿です。

リリースされましたねPHP7。

PHP: News Archive - 2015

ということでちょっとばかり触ってみようと思います。

まずはインストール

なにはなくともインストールしないことには始まりません。

とりあえずいつも使っているさくらのVPSでやってみます。

yumにはあるのかな?

ありますね。さすがremi。仕事が速い。

blog.remirepo.net

適当に書いてある通りに入れてみます。

$ sudo yum-config-manager --enable remi-php70
$ sudo yum update php\*
$ sudo yum install php70

でもこのままやるとデフォルトでremi-php70リポジトリが有効になっちゃうので、 嫌な人はこっちの記事のやり方の方がいいかも。

blog.remirepo.net

$ sudo yum --enablerepo=remi update remi-release
$ sudo yum --enablerepo=remi-php70 update php\*

これで入ったと思うのでバージョン確認。

$ php -v
PHP 7.0.0 (cli) (built: Dec  5 2015 07:17:51) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

おっけー☆

Let's try

一番の目玉は速度改善ではあるんですが、とりあえずは新しい文法というか記法ですかね。

ちなみにPHP7で追加・変更された文法・記法的なものは下記が詳しいですね。

d.hatena.ne.jp

このうち簡単に試せそうですぐに取り入れられそう、かつ有効性が高そうなものだと - スカラ型のタイプヒンティング - 関数・メソッドの戻り値についてのタイプヒンティング - ??(Null Coalesce)演算子 とかですかね。

引数のスカラ型タイプヒンティングはまぁ普段書いてる関数・メソッド定義に少々加えるだけなので ほんとにすぐに使えますね。

戻り値のタイプヒンティングも。

??(Null Coalesce)演算子は、今まで

$a = isset($b['index']) ? $b['index'] : '';

とか書いてたのが

$a = $b['index'] ?? '';

って書けるのはでかいですよね。

なんで同じ値を2回も書かなきゃならんのかと常々思ってましたし。

あとは無名関数とかはだんだん流行りの(?)関数型への道を進み始めてるって感じでしょうか。

$func = function($a) {
    return $a * 2;
}

とか

(function() {
    echo 'hoge';
})();

とか、一歩間違うとjavascriptかと思っちゃいますよね。

感想

まぁPHP7の恩恵のメインは速度だと思うので、とりあえずはWordpressとかCakePHP、Laravel辺りで実感するとして、 実際にある程度の規模のサイト、プログラムを書く時にはこれらの書き味的なものがじわじわと実感できそうな気がします。

業務でしばらく5.1とか使ってた後に、違うプロジェクトで5.4系とか使ったらarray()が[]で書けて無性に嬉しかったりそういうやつですねw

あとはそのうちASTで色々やってくれるツールとかもガンガン出てくると思うしその辺も期待ですかね。

以上です。