Invokable Controllers with One Specific Action

Às vezes, você precisa criar um controlador que não abrange todos os métodos resourcefull, como index(), create(), store(), etc.

Você só precisa de um controlador que faça uma única coisa e está com dificuldades para nomear esse método. Não se preocupe mais, existe o método __invoke().

Desde o Laravel 5.6, você pode criar um controlador com apenas um método __invoke():

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class ProfileController extends Controller
{
    public function __invoke($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}

Como você pode ver, também é possível passar um parâmetro para o id.

Para chamar esse método mais Controller, em suas rotas/routes/web.php, você deve ter o seguinte código:

Route::get('user/{id}', 'ProfileController');

Você também pode gerar esse tipo de Controlador usando o seguinte comando do Artisan:

php artisan make:controller ProfileController --invokable

Espero que este tutorial seja útil para você.