Executando verificação de segurança...
2

Valeu pelo comentário! Fico feliz que a ideia ressoou.

A sintaxe Flow::GET()->do(fn($req) => ...) foi uma escolha deliberada por alguns motivos:

  1. Flow::POST(), Flow::PUT(), Flow::DELETE() seguem o mesmo padrão. Se fosse return function($req), eu teria que inventar outra forma para os outros verbos HTTP.

  2. Quando você abre um arquivo de rota, a primeira coisa que vê é Flow::GET() ou Flow::POST(). O método HTTP está ali, explícito. Sem precisar procurar por uma constante no final do arquivo.

  3. O arquivo de rota pode ter múltiplos métodos (GET e POST no mesmo arquivo, como no exemplo). Com return function() você teria que escolher qual método retornar.

  4. A sintaxe atual permite encadear: Flow::GET()->name('home')->do(...). Com return function() isso ficaria mais verboso.

Dito isso, na verdade, o framework já suporta o formato que você sugeriu:

// app/router/users.php
return function($req) {
    return Response::json(['users' => User::all()]);
};

Isso funciona! O router detecta que o arquivo retornou uma função e a executa. Então quem prefere essa sintaxe pode usá-la. Mas aí perde a possibilidade de ter múltiplos métodos HTTP no mesmo arquivo — algo que eu gosto muito:

// app/router/users/[id].php
return [
    'GET' => fn($req) => User::find($req->param('id')),
    'PUT' => fn($req) => User::update($req->param('id'), $req->all()),
    'DELETE' => fn($req) => User::delete($req->param('id'))
];

Quando o Router inclui um arquivo de rota, ele também busca um retorno. Se você retorna:

  • Um callable → executa e envia a resposta
  • Uma Response → envia a resposta
  • Um array → interpreta como um mapeamento [MÉTODO => handler]

O Flow nasceu dessa necessidade: um arquivo, múltiplos métodos.

Valeu pelo feedback! 🚀

Carregando publicação patrocinada...