Upgrade to Pro — share decks privately, control downloads, hide ads and more …

世界最速? で PHP8 Native Framework 作った

世界最速? で PHP8 Native Framework 作った

Masaru Yamagishi

November 06, 2020
Tweet

More Decks by Masaru Yamagishi

Other Decks in Programming

Transcript

  1. 世界最速? で PHP 8 Native Framework 作った ~ PHP 8

    の勘所を押さえていく~ 2020/11/06 やまゆ Infinite loop
  2. やまゆ a.k.a ILの赤魔道士 - ㈱インフィニットループの赤魔道士 - #babylonjs #nuxtjs #laravel #カピバラさん

    #佐久間まゆ #一ノ瀬志希 #ヒプマイ名古屋 #FF14 - 最近の流行はヒプノシスマイク(アニメやってるよ! - 今年はライブ行けなくて死んでいた - larasap 常連
  3. PHP 8 + Laravel ? Dusk/Nexmo/Passport/Scout 以外の ファーストパーティリポジトリは 既に PHP

    8 に対応済み! https://twitter.com/driesvints/status/1323716163617083397
  4. Bleeding - PHP 8 Native Framework? https://github.com/il-m-yamagishi/bleeding/ - PHP 8

    Ready! - Thin framework - No nikic/fast-route - No route parameters, such as `/users/:userId` - GET & POST HTTP method only(RESTful is too complex) - Functional controller(No Instance or state needed) - Controller attributes(Method, Path, Middlewares) - Functional command with attributes - Accepts `application/json` first, `multipart/form-data` second - returns only `application/json`
  5. Bleeding - PHP 8 Native Framework? - PHP Standard Recommendation(PSR)

    first - PSR-3 Log ready, powered by monolog - PSR-4 Autoload ready, powered by composer v2 - PSR-7, PSR-17 HTTP ready, powered by laminas-diactoros - PSR-11 DI ready, powered by PHP-DI 7(beta) - PSR-12 ready, powered by PHP CodeSniffer - PSR-15 RequestHandler, Middleware ready, powered by Relay
  6. Attributes `#[Attribute]` - メタプログラミング用の属性付与 - `@annotation` のような doctrine/annotation を代替する -

    既存のアノテーションはただの文字列なのでパースが遅い - テスト・静的解析・ドキュメントなど様々に利用可能 - Bleeding ではルーティング、ミドルウェア、コマンド定義に使用