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

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

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

4ae5ae2c4411d41bd8c7e75830ed313d?s=128

Masaru Yamagishi

November 06, 2020
Tweet

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 ? 2020/11/26 リリース予定の最新版

  4. PHP 8 ? Docker を使えばビルド不要でお手軽体験が可能!

  5. PHP 8 + Laravel ? Dusk/Nexmo/Passport/Scout 以外の ファーストパーティリポジトリは 既に PHP

    8 に対応済み! https://twitter.com/driesvints/status/1323716163617083397
  6. “ Bleeding Framework

  7. 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`
  8. 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
  9. Bleeding - PHP 8 Native Framework?

  10. Bleeding - PHP 8 Native Framework?

  11. Attributes `#[Attribute]` - メタプログラミング用の属性付与 - `@annotation` のような doctrine/annotation を代替する -

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

  13. match 文

  14. コンストラクタプロパティ昇格(constructor promotion)

  15. Union Types 型宣言時、複数の型を宣言出来るようになった (ついでに、 `mixed` と宣言出来るようにもなった)

  16. JIT opcache 内に実装されている デフォルトで良い感じのパラメータが ini で指定されている 正直フレームワーク実装レベルだと差異がない

  17. RFC https://wiki.php.net/rfc 新機能は基本的に RFC を経由して導入 RFC を見ておけば、次のバージョンでどんなものが実装されそうか分かる

  18. https://github.com/il-m-yamagishi/bleeding/ PHP 8 はいいぞ。