はとのーと

エジソンノート(アイデア、思い付き、メモ)として使っています。誰かの役に立つかもしれないので公開しています。

Slim Frameworkについてのメモ

Slim3のものです。 とりあえずリンク集がメインになっています。

リンク

composerでSlim3をインストールする

composer でインストールすると最新版がインストールされる。 Slim3 を指定してインストールするには次のようにする。

ケルトンを作成する場合

$ composer create-project slim/slim-skeleton=~3 {TARGET-DIR}

ケルトンを作成しない場合

$ cd {TARGET-DIR}
$ composer require slim/slim:3.*

ルートとコンテナ

ルートは src/routes.php に書く。

src/routes.php

<?php
$app->get('/books', function (Request $request, Response $response) { ... } );

この function の内容をコントローラに移動することができ、その場合は次のように呼び出す。

<?php
$app->get('/books', BooksController::class . ':index');

この形式で書くとコントローラのコンストラクタにコンテナが渡される。

※コンテナは DB やログなどへの参照が含まれているオブジェクト。

<?php
namespace Controllers;

use Slim\Http\Request;
use Slim\Http\Response;

class BooksController extends Controller
{
    public function __construct(ContainerInterface $container)
    {
    }
    
    public function index(Request $request, Response $response)
    {
    }
}

PHPUnitのsetUpでエラーが出る時は後ろに型指定のvoidを付ける

PHP Fatal error: Declaration of FooTest::setUp() must be compatible with PHPUnit\Framework\TestCase::setUp(): void in ... のようなエラーが出る時はsetUpを次のように宣言すれば解消される。

<?php
protected function setUp(): void {
    ...
}