PHPカンファレンス2014!! 初参加!!
今日は、PHPカンファレンスに初めて参加してきた。
はじめのPHP5.5のメイントークに遅刻して、PHP5.5の詳細はよく聞けなかった・・・
ので、調べてまとめておきます。
追加機能
- オペコードキャッシュ
- ジェネレーター
- 例外のfinally追加
- パスワード専用のハッシュ関数
- trait(php5.4)
オペコードキャッシュ
PHPは、オペコードという内部状態に変換されたあと、実行されるのですが、 毎回オペコードに変換していると時間がかかるので、オペコードをキャッシュさせて、 実行時間を速めようというものらしいです。
今までの為替だと、APCがそれに当たるみたいですね。
簡単にいうと、
APCを本体に組み込んで、標準機能とした。
というのが、わかりやすいかもしれないです。
※正しくは、zendが作った、Zend Optimizer+(ZO+)= opcacheという機能が組み込まれたらしいです。
ちなみに、初期設定では、未使用になっているので、 php.iniで、extensionを読み込ませる必要があるみたいです。
zend_extension=opcache.so
ジェネレーター
PHPにもとうとうジェネレーターが!!
自分も詳細はうまく説明できないので、のちほどしっかり調べて記載します。
ジェネレータは、プログラムにおいて、数列の各要素の値などを次々と生成(ジェネレート)し他の手続きに渡す、という機能を持っている手続きである。値を渡す方法としては、コールバックのようにして他の手続きを呼ぶものもあれば、呼び出される度に次々と異なる値を返す関数であることもある。
by wiki
簡単に説明すると、対象の関数を呼びだしたときに、yieldと指定している部分で、 値を生成して渡す。
かつ、次回開始するときは、その地点から開始する。という感じかな。
例文をみるとわかりやすい。
どこからの記事で、ドラクエの宿屋的なイメージ。と書いてあったのが、面白かったw
※ようは、セーブできて、セーブ時点から開始することを言いたかったのだと思う。
調べていると、イテレータとの区別もしっかりあるようなので、今度ジェネレーターと一緒にまとめます。
※イテレータ = 再起処理、無名関数を含む様なループ関連などと、単純な認識しかなかったので、これを気に調べておきます。
例外のfinally追加
例外の有無に関係なく、必ず実行される部分ですね。 javaだと普通にある感じみたいです。
パスワード専用のハッシュ関数
これは地味に助かりますね。
sha1, md5などいろいろ暗号化方式があって、わかっている人はいいのですが、
適当に使う人もいなくもない気がするので、
ここまで、明示的にpassword用と分かれば、そのようなことはなくなるし、
関数名がわかりやすくていい。
それに、cryptのラッパーになっているらしく、アルゴリズムの選定、ソルトの指定などを自動で行ってくれるとのことなので、今後変わったとしても、うまくやっくれれば、いちいち関数変えなくても、レベルの高い暗号化を保てそう。
trait
これは、php5.4の機能なんだけど、絶対便利なので、記載しておきます。
単一継承しかできないPHPですが、これを使えば擬似的な多準継承的なことができます。
どっちかというと、用途としては、Mix-inに近いだと思いますが、便利です!
詳細や、事例はまた今後。
詳しく知りたい人は、比較的わかりやすく書いてありますよー。
各講演
- フリマアプリ「メルカリ」の超高速開発を支える PHP
- PHPerがAWSと出会ってDevOpsを目指した話
- PHPにおけるI/O多重化とyield
- HHVM + Hack == PHP++(※通訳あり)
に参加しました!
まず感想としては、PHPも最新のバージョンを追えば、PHPも全然ありだと思う。
あとは、結局コードを書く人の質。
最近はコードレビューが一般化してきているので、レベルの高いコードを書く人がいて、先導していれば、PHPでも全く問題ないと思う。
ただ、レガシーなシステムが多く、PHP5.2とかになると、comporse使えなくて、
ライブラリ管理しづらいし、使えないライブラリも多いから本当に困る。
最新のバージョンを追えるようにすることが、一番大事かなと感じた。
詳細は、後日少しずつ書いていきまーす。