PSR-0 という規約

通院のため朝からいけなかったPHPMatsuriですが、その日の午前中のTwitter TLに流れてきた「PSR-0」という単語が気になったので調べてみると以下のようなページがありました。

PHP Standards Working Group:PSR-0 Final Proposal

このページを見てもらえれば一目瞭然ですが、PHP5.3で導入されたnamespaceに関して、それを使用したクラスをこのような規約で配置しようというものですね。

例を見るととてもわかりやすいものになってます。

  • \Doctrine\Common\IsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php
  • \Symfony\Core\Request => /path/to/project/lib/vendor/Symfony/Core/Request.php
  • \Zend\Acl => /path/to/project/lib/vendor/Zend/Acl.php
  • \Zend\Mail\Message => /path/to/project/lib/vendor/Zend/Mail/Message.php

こういう規約がメンバー25名のPHP Standards Working Groupっていうgoogleグループ(PHPMatsuriで来日したLithiumのNateも参加してるみたい)で話し合われていたってことを知ってた日本人っているのかな?

とりあえずPHPMatsuriで聞いていた人たちの反応を見る限りではこのグループもこのPSR-0という規約も知ってる人はいない感じ。ということはみんながみている場所(ML等)ではこの話題はでてなかったってことかなぁ?(この議論が活発になっている昨年末は雲隠れしていた期間だからよくわからないんだよなぁ・・・)

けど、このような規約がしっかり浸透すればフレームワークを作る側からするとほんと楽になる。まぁ昔からのPEARZend Frameworkの規約もわかりやすいけど、このPSR-0はさらに明快。日本でもフレームワークを作っている人は結構いるのでPHP5.3以降のフレームワークはこの規約に則るべきですね。

うーむ。PHPMatsuriの午前中のセッションでNateがこれについてどういう話をしていたか、聞きたかったなぁ・・・

追記
id:hnw さんが上記URLの和訳をされてます。 → hnwの日記:PSR-0 を和訳してみた