個人的な習作に関するメモ
前提
- windows10(hyper-v有効)
- docker install済み
- composer install済み
step1 とりあえずプロジェクト構築
php composer.phar create-project slim/slim-skeleton:dev-master [my-app-name]
まずはこれを動かしてプロジェクトを作りたい。このままだと使えないので
composer create-project slim/slim-skeleton slim-auth
と変更して実行。win内のphpが8系だったので怒られた。(何故か7系縛り)
適当にdockerで環境を立ち上げる
docker run --mount type=bind,src=${PWD},dst=/var/www --name php --rm -it php:7 bash
これだとcomposerが動かないので雑に https://getcomposer.org/download/ これを実行し、composerが動く環境を用意。
コンテナ内部で下記実行。途中色々ないと怒られたのでついでにそれも入れる。
cd /var/www
apt-get update
apt-get install -y git zip unzip
php composer.phar create-project slim/slim-skeleton slim-auth
で、OK。スマートにやる方法は絶対あるけど、ググルのめんどいのでとりあえずこんな感じで。
exitで抜けて作業終了。
step2 slim動かす
作ったディレクトリにdocker-compose.ymlがあるので、それを少し改造する。
最新のslim4.7ではphp8で動くっぽいので、php8にする。とりあえずそれだけ。
docker-compose up -d
すれば http://localhost:8080/
にアクセスできるようになる。
これでOK。
step3 ディレクトリデザインを見ていく。
ADRパターン (Action Domain Responder) というのに沿って作られてるらしい。MVCを触ることが多かったので少し困惑したが、慣れればそんなに問題じゃない。
とりあえず、ぱっと見た感じ
ドメイン層はRepositoryのInterfaceとか、そこから取得できるデータのEntityクラスを持っている。
インフラストラクチャ層では、ドメイン層で持つInterfaceの実装をやってる。
アプリケーション層は...めっちゃ広い。その他。みたいな感じ。
個人的に、Interfaceクラスの末尾にInterfaceと書いてないのが混乱の元だったので、そこは後でどうにかしたい。
総括
laravel以外のフレームワークを選ぶとした何がいいかなー、特に深い思い入れはないけどDIとかrouteの設定は似てるやつがいいなと思って見つけたのがslim。
せっかくだからメモ的にQiitaにまとめようと思ったのがこの記事を書いたきっかけです。
Windowsでphpを使っていてslimを使おうとしているn人の開発者の役に立てば幸いです。
では。
end