Laravel コントローラークラスをインスタンス化するには?

ショコラ
ショコラ

Laravel コントローラークラスをインスタンス化するには?

app関数でインスタンス化が良いかなと思います。

もっさん先輩
もっさん先輩

①app関数でインスタンス化します。

$controller = app(App\Http\Controllers\{コントローラークラス}::class);

②makeメソッドでインスタンス化します。

$controller = app()->make(App\Http\Controllers\{コントローラークラス}::class);

③resolve関数でインスタンス化します。

$controller = resolve(App\Http\Controllers\{コントローラークラス}::class);

resolve関数は vendor/laravel/framework/src/Illuminate/Foundation/helpers.php に↓このように定義されており、app関数呼び出しているだけですね。

if (! function_exists('resolve')) {
    /**
     * Resolve a service from the container.
     *
     * @param  string  $name
     * @param  array  $parameters
     * @return mixed
     */
    function resolve($name, array $parameters = [])
    {
        return app($name, $parameters);
    }
}
Scroll to Top