開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. PHP >
  4. PHPの軽量フレームワークSlim3を触ってみた
no-image

PHPの軽量フレームワークSlim3を触ってみた

こんにちは。
ニシザワです。

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
結果として、検証用やプロトタイプ作るのに向いてるかなって感じです。
  • posted by Nextatスタッフ
  • Slim
TOPに戻る