Hello World - Mezzio 微框架

知识库
知识库文档
/tech-stacks/laminas/examples/Hello World - Mezzio 微框架.md

文档

Hello World:Mezzio (Laminas 微框架)

目标

使用 Mezzio 微框架创建最小 API,展示 Handler、路由和中间件模式。

完整代码

1. 创建项目(选择 FastRoute + Whoops + 最小模块)

composer create-project mezzio/mezzio-skeleton hello-api
cd hello-api

2. 创建 Hello Handler

mkdir -p src/App/Handler

src/App/Handler/HelloHandler.php

<?php

namespace App\Handler;

use Laminas\Diactoros\Response\JsonResponse;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;

class HelloHandler implements RequestHandlerInterface
{
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        return new JsonResponse([
            'message' => 'Hello, Vibe!',
            'framework' => 'Mezzio (Laminas)',
            'php_version' => PHP_VERSION,
            'timestamp' => date('c'),
        ]);
    }
}

3. 创建带参数的 Greet Handler

src/App/Handler/GreetHandler.php

<?php

namespace App\Handler;

use Laminas\Diactoros\Response\JsonResponse;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;

class GreetHandler implements RequestHandlerInterface
{
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $name = $request->getAttribute('name', 'World');

        return new JsonResponse([
            'message' => "Hello, {$name}!",
            'powered_by' => 'Mezzio',
        ]);
    }
}

4. 注册路由 — config/routes.php

use App\Handler\HelloHandler;
use App\Handler\GreetHandler;

return function (Application $app, MiddlewareFactory $factory, ContainerInterface $container): void {
    $app->get('/api/hello', HelloHandler::class, 'hello');
    $app->get('/api/hello/{name}', GreetHandler::class, 'greet');
};

运行步骤

composer serve
# 或 php -S localhost:8080 -t public/

预期输出

curl http://localhost:8080/api/hello
# {"message":"Hello, Vibe!","framework":"Mezzio (Laminas)","php_version":"8.2.0","timestamp":"..."}

curl http://localhost:8080/api/hello/World
# {"message":"Hello, World!","powered_by":"Mezzio"}

信息

路径
/tech-stacks/laminas/examples/Hello World - Mezzio 微框架.md
更新时间
2026/5/31