Slim Frameworkのミドルウェアの中でDB接続エラーが出る

問題点

Slim Framework のミドルウェアは PSR-7 を採用していますので、行き方向(リクエスト向)と帰りの方向(レスポンス向)で、自由に処理を書けます。
ところが、行き方向でDBを扱った処理を書いたところ、

Fatal error: Call to a member function connection() on null in ~

といったエラーが出力されてしまいました。
試しに、帰りの方向(レスポンス向)にも全く同じ処理を書いたところ、こちらではDB接続が出来ました。
DIコンテナに illuminate/database を設定しているのですが、どうもリクエスト処理が完了してからDB接続処理が走っているような感じですね。 以下ソースのイメージです。

...

$app->add(
    function ($request, $response, $next)
    {
        // 行き方向(リクエスト向)
        $users = new \App\Models\users;
        log( $users->count() ); // DB接続エラーになる

        // 次のミドルウェアへ送る
        $response = $next($request, $response);

        // 帰り方向(レスポンス向)
        $users = new \App\Models\users;
        log( $users->count() ); // 正常にusersテーブルのカウント数が返る

        // 前のミドルウェアへ返す
        return $response;
    }
);

...

解決法

そこで、以下のような2行を書くと、先にDB接続が実行されて、行き方向でもDB処理が正常に実行されましたので、ここに記載します。

...

$app->add(
    function ($request, $response, $next)
    {

        // DB接続実行
        global $container;
        $container->db;

        // 行き方向(リクエスト向)
        $users = new \App\Models\users;
        log( $users->count() ); // 正常にusersテーブルのカウント数が返るようになった!

        // 次のミドルウェアへ送る
        $response = $next($request, $response);

        // 帰り方向(レスポンス向)
        $users = new \App\Models\users;
        log( $users->count() ); // 正常にusersテーブルのカウント数が返る

        // 前のミドルウェアへ返す
        return $response;
    }
);

...

スーパーグローバル使って $GLOBALS['container']->db; 1行でもいいですけどね。

ご注意

Slim Framework のマニュアルやソースを読み込んだわけではないので、これが間違いのない方法かは不明ですので、自己責任でご参考いただければと思います。