続・Think! Think! Think!

世の中について考えてみる。後、webサイドの知識を書いています。※時々ネタあり。

PHPカンファレンス2014!! 初参加!!

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使えなくて、

ライブラリ管理しづらいし、使えないライブラリも多いから本当に困る。

最新のバージョンを追えるようにすることが、一番大事かなと感じた。

詳細は、後日少しずつ書いていきまーす。