PHPの軽量フレームワークSlim3を触ってみた
こんにちは。
ニシザワです。
Laravelを日常で使っていると、もう少し軽量のフレームワーク使いたいな
という域に達したので、slim3という軽量フレームワークを見つけたのでさっくとhellow worldまで説明したいと思います。
公式→https://www.slimframework.com/
今回はslim3を簡単に導入できるSkeltonのパッケージが公式に合ったのでそれを使ってみます。
https://github.com/slimphp/Slim-Skeleton
この辺はお好みで。
中身は下記
render用のクラスはdependencies.phpで注入されてる。
routes.phpを変更
公式にも、必要があれば好きなモジュールインストールしてねって書いてるし。
サクッと、JSで画面周りを作りたい時にサーバーサイドでAPIとして使うのがいいかなと思います。
一応認証とか、DBつなげて等、公式に乗ってるのですが、結局DB周りはORMでLaravelのEloquent推奨しているみたいなので、Laravel使ったほうが早いじゃん!ってなりましたw
結果として、検証用やプロトタイプ作るのに向いてるかなって感じです。
ニシザワです。
Laravelを日常で使っていると、もう少し軽量のフレームワーク使いたいな
という域に達したので、slim3という軽量フレームワークを見つけたのでさっくとhellow worldまで説明したいと思います。
slim3概要
必要最低限の機能を乗せたマイクロフレームワーク公式→https://www.slimframework.com/
今回はslim3を簡単に導入できるSkeltonのパッケージが公式に合ったのでそれを使ってみます。
https://github.com/slimphp/Slim-Skeleton
導入
まずはcomposerでパッケージを取ってくる
composer create-project slim/slim-skeleton [my-app-name]
インストールフォルダは下記
- logs
L app.log //monolog使ったシステムログ
- public
L index.php //ドキュメントルート
- src
L dependencies.php //依存関係の注入
L middleware.php //制御系
L routes.php //ルーティング制御
L settings.php //設定
- templates
L index.phtml //Viewファイル
- tests //テストフォルダ
- vendor
このまま、ドキュメントルートにWebサーバーから指せば、Hellow world完了!
せっかくなので、コントローラー経由で同じことしみる
composer.jsonに名前空間を追加するこの辺はお好みで。
〜
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/",
"App\\": "src/App"
}
},
〜
srcフォルダにApp/Controller/Controller.phpを作成する。中身は下記
namespace App\Controller;
use Interop\Container\ContainerInterface;
class Controller{
protected $container;
// constructor receives container instance
public function __construct(ContainerInterface $container) {
$this--->container = $container;
}
public function index($request, $response, $args) {
return $this->container->renderer->render($response, 'index.phtml', $args);
}
}
ポイントはコンテナから、render用のクラスを取ってくる。render用のクラスはdependencies.phpで注入されてる。
routes.phpを変更
$app->get('/[{name}]', \App\Controller\Controller::class. ':index');
これで、完了です。
感想
必要最低限のものしか本当にないなと思いました。公式にも、必要があれば好きなモジュールインストールしてねって書いてるし。
サクッと、JSで画面周りを作りたい時にサーバーサイドでAPIとして使うのがいいかなと思います。
一応認証とか、DBつなげて等、公式に乗ってるのですが、結局DB周りはORMでLaravelのEloquent推奨しているみたいなので、Laravel使ったほうが早いじゃん!ってなりましたw
結果として、検証用やプロトタイプ作るのに向いてるかなって感じです。