PHPerKaigi2024で登壇したときの資料です。 https://fortee.jp/phperkaigi-2024/proposal/ae2ded4d-8e7e-47a0-85d1-26a8c92308ac
![PHP8の機能を使って堅牢にコードを書く](https://cdn-ak-scissors.b.st-hatena.com/image/square/1fb1647006938b2ba1a776a5c672f8d3bf7a4916/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F6d8c20a1dd9249d0a5cf1f8e6453d8ef%2Fslide_0.jpg%3F29230936)
ゼロイチの開発で、Laravel 使うことになったプロダクトのソースが CHAOS-☆ な感じだったので、何とかしよう。 と思って、アーキテクチャを真剣に考えてみた。 その経緯や思想とか。 なお、完成版ではなく、以降も試行錯誤して改善していく予定なのであしからず。 (ちょこちょこ更新しています) 環境 PHP 7.4.11 Laravel Framework 8.15.0 Laravel の特徴(主観) フレームワークとしての枠組はありながらも、その枠組みは比較的緩く、開発初期にアーキテクチャを決めておかないと、あっという間にやゔぇぇえ事になってしまう。 が、「こういうアーキテクチャにしてみようかな」と思ったら、必要なパーツは既に揃ってたり、比較的簡単に実現できたりする。 「ガチガチの枠組みは用意しないが、どんなアーキテクチャを考えたとしても、それを構築できるようにしてあるぜ!」 という思
PHPとPythonとRubyの連想配列のデータ構造がそれぞれ4〜5年ほど前に見直され、ベンチマークテストによっては倍以上速くなったということがありました。具体的には以下のバージョンで実装の大変更がありました。 PHP 7.0.0 HashTable高速化 (2015/11) Python 3.6.0 dictobject高速化 (2016/12) Ruby 2.4.0 st_table高速化 (2016/12) これらのデータ構造はユーザーの利用する連想配列だけでなく言語のコアでも利用されているので、言語全体の性能改善に貢献しています1。 スクリプト言語3つが同時期に同じデータ構造の改善に取り組んだだけでも面白い現象ですが、さらに面白いことに各実装の方針は非常に似ています。独立に改善に取り組んだのに同じ結論に至ったとすれば興味深い偶然と言えるでしょう2。 本稿では3言語の連想配列の従来実
「秩序のない分岐なんてほろんじまえ!!!!」 レガシーなシステムを触った時に、こう思ったことはあるのではないでしょうか。 私にもよくそう思うときがあります。 そんな絶望を生み出さないように分岐に関するアンチパターンと対策を考えてみました。 まず、なぜ生み出されるのかを書き出してみましょう。 秩序のない分岐 たくさんの分岐 →迷子になる ネストが多い →インデントが見づらい。 分岐ごとに条件が複雑 →覚えるのがつらい。 気づいたらスパゲッティコード →処理を追っている間にお腹が空き、スパゲッティを食べちゃうので太る。 テストがしづらい。テストケースが作りづらい。 →テストをするためのテストが必要とか言い出してしまう。 ifだけに畏怖 →書きたかった。 分岐処理に出会った時、これだけの問題があることに気づきました。 私はもう絶望したくないし、私のように絶望する人を作りたくない。(そして太りたく
概要 PHPプログラミングの世界では、ある一定のトレンドが「モダンPHP」として、一部の人によって (彼らの書籍やウェブサイト上で) 強烈に広められ、他のアプローチは、遅れていたり、愚かだったり、あるいは単に間違いだとみなされて、眉をひそめられています。 それらの人々は、彼らの物事のやり方を他人に追従させようと、飽くなき努力を続けているように見えます。 このウェブサイトは、PHP プログラミングに関する現実的な見解を示すために作られました。流行りのトレンド、理論、学問的な教示ではなく、経験と実践の帰着を書き記した視点です。 ウェブサイト PHP - The Wrong Way は生きたドキュメントですので、より多くの情報が明らかになるにしたがって更新され続けます。 お気軽にコントリビュートしてください。 翻訳 ドイツ語 英語 フランス語 日本語 インドネシア語 トルコ語 ペルシャ語 ポルト
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く