小規模なサイトをPHPで作るときのオススメcomposerライブラリ構成(2019年)

2000年代後半ぐらいからは、ウェブ開発の際には何らかのフレームワークを使用するのが当たり前になっていたと思います。
(まぁJava界隈で言えば90年代からStrutsとかありましたけども、Web屋的にはRails以前/以降的なエポックがあると思います。)

私もご多分に漏れずサイトの規模の大小を問わず、何らかのフレームワークを使って開発していましたが、最近のパッケージマネージャ(PHPの場合はComposer)とライブラリ整備具合の進歩もあって、10ページ未満ぐらいのウェブサイトならフレームワーク使わずに書いたほうが楽なんじゃねーの?と思ってきました。

最近だとごく小規模なサイトを作るためのマイクロフレームワークとして存在するLumenを採用したこともあるのですが、微妙にLaravelと挙動が違うせいでハマったり(特にセッションが使えないとか)、フレームワークのバージョンアップで挙動が変わるのに追随するのが面倒で・・。

で、最近組んでいるサイトでは必要なライブラリだけ取り込んで、基本ピュアPHPでいいのではないか?という構想で制作しています。
composer.jsonは以下のような感じ。

{
    "require": {
        "guzzlehttp/guzzle": "^6.3",
        "j4mie/idiorm": "^1.5",
        "twig/twig": "^2.0",
        "vlucas/phpdotenv": "^3.4",
        "nikic/fast-route": "^1.3"
    },
    "autoload": {
        "psr-4": {
            "Lib\\": "lib/"
        }
    }
}

Guzzle

WebAPIたたくときに使用。そうでないなら使わない。
file_get_contentsとかcurlで処理するのが記述性低いのと、エラー処理が面倒なのでguzzle推奨。

idiorm

ライトなORM。PDOだけでも十分何とかなるとは思うが、DBまわりあれはあれでお約束的に書かないといけないことが多いので、DB周りの記述が増えてくるとしんどい時がある。
なお、将来的にでかくなりそうなシステムであれば、DBラッパーだけはしょっぱなからもっとしっかりした足回りのを使ってもよい。例えばDoctrineとか。

twig

テンプレートエンジン。
個人的には長い間「PHP自体がテンプレートエンジンなんだよ!」派でしたが、いや、やっぱ記述量多くなるわ。ってことで数年前にテンプレートエンジン要る派に回帰しました。
今だとtwigかbladeが良いと思います。

個人的にはbladeのほうが洗練されていると思いますが、twigのほうが広く使われているので、チームの習熟度に応じてチョイスしてください。

phpdotenv

設定ファイルを切り出す重要なライブラリ。
DBのパスやWebAPIのキー、エンドポイントなどを設定ファイル(.envファイル)に分離でき、しかも.envをgitignoreにぶち込んでおけば、DBのパスがGit経由で漏れちゃう心配もなくなる優れもの。

fast-route

ルーター。URLから処理部へのマッピングを担当。
要はマイクロフレームワークって、小さなルーターにいくつかの標準ライブラリをくっつけたものなので、ルーターさえあればあとは何とでもなるともいえる。
ルーターを自作しても大した手間ではないが、面倒なので既存のルーターを見繕ったところこれが比較的使いやすかったので採用。
もっとも嫌なところがないでもないが、私にとっては許容できるレベル。

valitron

シンプルなバリデーションライブラリ。
バリデーションエンジンは自作するのは難しくないが、ひたすら記述量が多くなるので自作したくない度が高いやつ。
スターが多いものをいくつか検討してみましたが、比較的小規模なバリデーションの中ではvalitronが一番設計の筋が良いように思いましたので、こちらを採用しています。

その他

あとはそのタイミングタイミングでいろいろとチョイスしてく感じですね。PHPUnitとかは鉄板として、日付計算系のCarbonなども入れる率超高いです。

コメント

タイトルとURLをコピーしました