控制器与依赖注入
namespace App\Controllers;
use Mtphp\Http\Request;
use App\Services\UserService;
class UserController
{
// 框架自动注入 Request(按类型)与业务服务(按容器解析)
public function show(Request $request, UserService $svc, int $id)
{
$user = $svc->find($id);
return response()->json($user);
}
// 仅返回数组/对象会被自动按 JSON 输出(见 App::normalizeResponse)
public function list(UserService $svc): array
{
return $svc->all();
}
}
参数绑定规则(App::bindParams):
- 类型命中
Mtphp\Http\Request→ 注入当前请求对象; - 参数名与路由命名参数匹配 → 注入路由值;
- 可选参数 → 取默认值;
- 类型为非内置类/接口 → 由容器
make()解析(依赖注入)。
兼容 PHP 8.1+ 的联合类型与交叉类型(
Support\Reflect统一解析)。