私自身は実用/非実用に拘らず実際何度もクラスローダーを実装してきたわけですが、PHPを構成するもののなかでも非常におもしろい領域であります。AOPフレームワークなどはメタプログラミングによるアスペクト志向プログラミングの基盤を提供します。Autoload0/functions.phpさて実装についてですが、オーソドックスにディレクトリをセットするだけの方式でした。パフォーマンスはまったく気にしてないです。Guide)は、どちらもコーディング標準の勧告ですが、何が異なるのでしょうか。PSR-1はPHPコードを相互運用するために必要な標準コーディング要素だとされます。これには、改行コードはUTF-8でBOMを含んではいけないこと、出力やPHP設定変更は宣言の読み込みとは厳格に区別されるべきこと、そしてオートロード可能であるべきことが含まれます。PSR-2は「このガイドによる利益は規則自体ではなく、規則を共有すること」それによって「複数の作者が認知の摩擦を減らすこと」にあるとされます。そんなわけで、今回の発表にあたって私が提示したのはコーディングガイドとPHP-CS-Fixerのルールです。coding-style.md.php_cs.dist私はどちらかといったらコードフォーマッタアンチなのですが(と、けっこう発言してる)、久々にやってみたら意外とたのしかったですね。PSR-3についてLog3実装順的には最後でした。Loggerも何度か実装したしMonologの拡張もやってたので。いや説明が抜けてましたが、出力フォーマットは俗に改行区切りのJSONと呼ばれるやつです。96あたりにも書きました。サンプルコードはGitHubでも公開したので興味があったら読んでね。github.comPSR-4についてAutoload4/ClassLoaderいままで忘れてたのですが、そういやComposerの話は2017年に既にやってました。ナレ今回はPSR-0とは趣向を変えて、せっかくなのでクラスにしました。PSR-5について今回は実装してません。最後にちょっとだけ触れました。PRESS総集編にも収録されてるので、買って読んでね。amzn.toあと、僕も2016年頃にPHPDocとか実行時情報をとってきていい感じにするやつを実装しようとしてたんですけど、PHPStanとかPhpactorがいい感じだったので最近手をつけてないですね。github.comおもしろオレオレCUIアプリのサンプルコードとしては結構おもしろいかもしれませんね。PSR-7について今回は実装してない。qiita.com実装自体はやればできるのは知ってる。PSR-8について今回は実装を見送った。暇なら提案の経緯の調査とか、提案内容についていろいろ考察してみたい気もするけど、今回は余裕がなかった。PSR-11について実装してないけど、発表当日の朝に読んでた。提案の肝なのだと理解。PSR-11メタドキュメントまで読むと、いろいろ共通要素を議論したけどここまでしかまとまらなかったんだなって感じがして赴き深い。定義に含まれてなかったのは、やっぱり、うーん。Interfaceのトピックは長くて全部は読んでないんだけど、このやりとりの後ならPHP-FIGに嫌気が差すのも、まあ、わかる。これってそこまでして相互運用したいものだったの?PSR-12について現在DRAFTだけど、ずっと作業は進んでるみたい。PSR-2以降に追加された文法や、PSR-2では言及されなかったケースについての定義もある。PSR-2で言及されなかったパターン、こんなの。$expr2);あと、PSR-12では名前空間の深度についても言及がある。ClassZ,};せ、攻めるなあ。PSR-13についてPSRの最悪中の最悪。こんなのに賛成票を投じた奴は誰だと叫びたくなる。Linkingの抽象化だってのはわかる。Templateのユースケースだってすぐに想像がつく。pagesだって使ってないじゃねえか。「たぶんあったら便利だと思うから仕様に入れておこう」って発想は本当に危険で、このせいでPSR-13がゴミになってしまったと感じる。}テンプレートだったら完全に無視!!そりゃそーだ。テンプレートに当て嵌められるべき変数なんて、ここでは誰も知らないんだから......。ときに何かできるパターンなんて本当にあるの?それにまして、PHP-FIGが提供するphp-fig/link-utilパッケージの中でもlink-util/TemplatedHrefTrait.phpの実装がつらい。}これは新卒がやったらていねいに優しく諭すけど、この実行時の雑すぎるパースでの判定はとても危険。プロが書くコードじゃない、とまで言いたい。そのほかこの仕様の是非を検討すると、さまざまなRFCや標準、PHPの実装までもが登場してきて非常に厄介なので、ここではこの程度で収めておきます。PSR-14についておもしろそうだけどPSR-13に深入りしてたらどんどん時間が溶けてしまったので全然把握してない。PSR-15についてまだ実装してない。シングルパスのミドルウェアなのは知ってる。PSR-16について簡単っぽいから実装するつもりだったけどPSR-13に深入りしてたら時間が溶けたので、まだ実装してない。PSR-17とPSR-18についてどっちもHTTP関連だけど、案の定僕はまだ実装してない。Sagi-Kazarが作業グループに参加してそう。PSR-17には参加してなそう。PSR-19についてPSR-5から分離された。なるんだろう、わからん。まとめ雑にまとめたけど、めっちゃ徒労感がある。ぜいたくな時間を送ってしまった@tadsanにFANBOXで課金して励ましのおたよりを送ろう。Conferenceに参加してきました。2017ピクシブ開発基盤チームのうさみ(@tadsan)です。(1)はてなブログをはじめよう!zonu_exeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。