夕梦 SunsetReverie轻量 PHP 微服务框架
多 API 域隔离 · 组件可替换 · 无 ORM
为「一个人维护的中型后端」而设计
核心 56 个文件 + 10 个组件,只用 PHP 内置能力。部署不需要 Composer,不需要 vendor 目录。
域 → 版本 → 路由三层隔离,token 不跨域。四个端共用一套领域服务,不用复制四份 controller。
缓存 4 种驱动、数据库 3 种、图片 2 种、邮件 2 种,全部基于接口而非继承。
没有 ORM。Query Builder 写出来就是一条可读的 SQL,N+1 在写的时候就看得见。
39 条错误码,HTTP 状态与业务码一一对应。异常按语义分类,生产环境自动脱敏。
349 个用例 · PHPStan level 8 · 架构检查 8 项 · 三版本 × 三数据库实测。
// routes/web.php
Route::get('/posts', [PostController::class, 'index'], 'post.index')
->middleware(['auth.optional']);// 控制器只做参数转换
final class PostController
{
public function __construct(private readonly PostService $posts)
{
}
public function index(Request $request): array
{
return $this->posts->paginate(
page: $request->page(),
perPage: $request->perPage(),
);
}
}// 领域服务写真正的规则
final class PostService
{
public function __construct(private readonly Connection $db)
{
}
public function paginate(int $page, int $perPage): array
{
$query = DB::table('posts')->where('status', 1);
return [
'items' => $query->orderBy('published_at', 'desc')
->limit($perPage)
->offset(($page - 1) * $perPage)
->get(),
'total' => $query->count(),
];
}
}| 适合 | 不适合 |
|---|---|
| 多端共存的业务后端(PC / App / 小程序 / 后台) | 需要庞大生态和现成轮子的项目 |
| 团队规模小、希望少一层魔法 | 团队已熟悉某个主流框架且有大量积累 |
| 部署环境受限(不能装 Composer) | 需要重量级 ORM 与复杂关联关系的系统 |
| 想随时能读懂每一行执行路径 | 需要内置管理后台、CMS 等开箱即用功能 |
v1.0 · 夕照
日落时分的第一束稳定光 —— 核心可用,生产就绪。
功能完整、可用于生产试用,但 API 仍可能微调。若发现设计问题会发新的 beta 而不是升大版本。 精确版本号见顶部导航栏(从 Application::VERSION 自动读取)。
| 项 | 结果 |
|---|---|
| 测试 | 349 用例 / 916 断言 |
| 静态分析 | PHPStan level 8 零错误 |
| 架构检查 | 8 项全过 |
| 覆盖率 | core(除 CLI)83.2% · components 75.6% |
| PHP 版本 | 8.3.36 · 8.4.27 · 8.5.2 三版本全过 |
| 数据库 | MySQL 8 · PostgreSQL 18 · SQLite 3 |