OTOBANK Engineering Blog

オトバンクはコンテンツが大好きなエンジニアを募集しています!

PSR をおさらいする

さてたまには PHP のことも書いてみようと思います。一応 PHP をメインにしている会社ですからね! あ、申し遅れました @riaf です。

ところで、みなさん PSR はご存知かと思いますが、最近どうなってるか知っていますか? (もう今更 PSR とは?みたいな話はしないぞ!!)

あー、はいはい。PSR ね。あの autoload とかのやつでしょ。

とかいう認識だとちょー置いていかれる感満載の状態です。 軽くまとめてみましょう。(2016/02/29現在)

STATUS NUM TITLE
DEPRECATED 0 Autoloading Standard
ACCEPTED 1 Basic Coding Standard
ACCEPTED 2 Coding Style Guide
ACCEPTED 3 Logger Interface
ACCEPTED 4 Autoloading Standard
DRAFT 5 PHPDoc Standard
ACCEPTED 6 Caching Interface
ACCEPTED 7 HTTP Message Interface
DRAFT 8 Huggable Interface
DRAFT 9 Security Disclosure
DRAFT 10 Security Advisories
DRAFT 11 Container Interface
DRAFT 12 Extended Coding Style Guide
DRAFT 13 Hypermedia Links

はい。Draft 含めると PSR-13 まであって、 PSR-0 は既に Deprecated ですからね。

Draft の方に目をやると、PSR-2 が PSR-12 に置き換えられようとしていたり、今や主要フレームワークにはだいたい入ってる DI コンテナのインタフェースが PSR-11 で定義されようとしていたり、近頃 RESTful API とともに扱われることの多い Hypermedia に関するものなんかも PSR-13 で出てきていますね。

PSR-8 は...うん。そんなに面白くないと思うんだけど...。

いくつかの PSR ではライブラリの振る舞いを定義しているので、それに対応しているライブラリもちょっとまとめてみました。多分全然足りてないので、もしリストに追加したほうがいいライブラリをご存知の方はこちらからおしらせください (:p。

PSR-3 Logger Interface

(Logger は現状 monolog 1択感...他にもあるけど monolog を避ける理由もないしねえ)

PSR-6 Caching Interface

zend-cache に PSR-6 Adapter の PR が出てたり、世の中のものが対応してくるまではもう少しかかりそう?

PSR-7 HTTP Message Interaface

ACCEPTED のものを拾うとこんな感じですかね。

え、少ないって?だから追加したほうがいいライブラリをご存知の方は... って書いたじゃないですか〜あ。

ということで、PHP に迫り来る Immutable の波のお話でした。 (ブログ内に "2/29" を入れるために無理やりな記事になったことは否めない感じです / 素直に閏年の話題をしなさいっていう話ですね)

最後に、大事なことなのでもう一度。

もしリストに追加したほうがいいライブラリをご存知の方も、そうでない方も、こちらからおしらせください