Search by

Anon Framework Next - A PHP backend API framework

Package info

github.com/YuiNijika/Anon

pkg:composer/yuinijika/anon

Statistics

Installs: 13

Dependents: 0

Suggesters: 0

Stars: 3

Open Issues: 0

v4.0.0-alpha 2026-05-10 22:49 UTC

This package is auto-updated.

Last update: 2026-09-20 18:31:05 UTC


README

Anon Framework Next 是一个现代化的 PHP 后端 API 框架。本仓库是它的应用骨架(Skeleton)。

默认骨架刻意保持轻量,初始化时只保留少量最基础的示例路由和一个简单控制器,方便你像使用 ThinkPHP 一样,创建项目后直接开始改业务代码,而不是先清理一堆复杂 demo。

核心架构设计

框架采用了分离式架构:

  • Skeleton (本仓库):应用模板,包含控制器、模型、路由定义、中间件以及 anon.config.php / .env 等业务配置文件的存放地。
  • Core (YuiNijika/AnonCore):框架的核心逻辑引擎(容器、路由解析、ORM、JWT 等),被安装在 vendor/ 目录下。

目录结构

/
├── app/                  # 应用程序核心代码目录
│   ├── Controller/       # 控制器(默认 Index 欢迎页)
│   ├── Route/            # 路由定义(默认入口: Main.php)
│   ├── Action/           # Server Actions(按需添加)
│   ├── Middleware/       # 自定义中间件(按需添加)
│   └── Model/            # 数据模型(按需添加)
├── run/                  # Web 根目录
│   └── index.php         # 单一入口
├── runtime/              # 日志、缓存等运行时文件
├── anon.config.php       # 项目主配置
├── websocket.php         # WebSocket 路由(php anon ws)
├── .env                  # 环境变量
├── anon                  # CLI 入口
└── composer.json

快速开始

1. 创建项目

composer create-project yuinijika/anon my-app
cd my-app

2. 环境与项目配置

框架推荐将结构化配置写入 anon.config.php,将密码、密钥、环境差异值保留在 .env* 中。

直接修改根目录下的 .env 与 anon.config.php 即可。

默认骨架里的 anon.config.php 保持空定义(仅 Config::define([])),需要时再按文档追加 cache、database、auth 等覆盖项。

框架同时支持类似 Vite 的环境文件分层加载:

  • .env
  • .env.local
  • .env.development
  • .env.production
  • .env.{APP_ENV}.local

框架启动时会优先读取 anon.config.php,未配置的项目会继续回退到 .env 中的旧环境变量,便于平滑升级。

3. 启动开发服务器

框架内置了轻量 CLI 工具,你可以直接启动本地开发服务器:

php anon dev

服务器默认监听 http://127.0.0.1:8000。

默认示例

创建项目后,骨架默认只提供一个欢迎页:

GET  /
  • 控制器:app/Controller/Index.php(indexTemplate 介绍页)
  • 路由:app/Route/Main.php

不附带 /ping、示例 CRUD 或 Server Action。业务接口请直接在 Main.php 新增。

更完整的路由 / 控制器示例见文档:vitepress/docs/guide/architecture/router.md。

推荐起步方式

  1. 打开 http://127.0.0.1:8000/ 确认骨架已启动
  2. 改 app/Route/Main.php 增加接口
  3. 在 app/Controller 写业务
  4. 按需调整 anon.config.php 与 .env

一个最小 API 示例:

use Anon\Core\Facade\Route;
use Anon\Core\Http\Response;

Route::get('/ping', fn () => Response::success(['pong' => true]));

常用命令

anon 命令行工具提供了一些实用的代码生成器,帮助你快速搭建业务骨架:

# 启动 HTTP 开发服务器
php anon dev

# 启动 WebSocket 服务(独立进程,见 websocket.php)
php anon ws

# 生成配置缓存
php anon config:cache

# 清理配置缓存
php anon config:clear

# 生成路由缓存(仅支持控制器路由)
php anon route:cache

# 清理路由缓存
php anon route:clear

# 查看失败任务
php anon queue:failed

# 重试单个失败任务
php anon queue:retry --id=job-id

# 清空失败任务
php anon queue:clear-failed

# 生成单文件控制器
php anon make:controller User

# 生成目录式控制器,自动创建 Index.php
php anon make:controller User --group
php anon make:controller Admin/User --group

# 生成资源控制器模板
php anon make:controller User --resource
php anon make:controller Admin/User --group --resource

# 生成模型
php anon make:model User
php anon make:model Admin/User

# 生成中间件
php anon make:middleware CheckLogin
php anon make:middleware Admin/CheckLogin

推荐在控制器目录中使用这种更接近 ThinkPHP 的分层方式:

app/controller/User.php
app/controller/User/Index.php
app/controller/Admin/User/Index.php
app/model/User.php
app/model/Admin/User.php
app/middleware/CheckLogin.php
app/middleware/Admin/CheckLogin.php

如果你喜欢字符串控制器写法,也可以直接这样注册路由:

Route::get('/admin/users', 'Admin/User/Index@index');

如果你的控制器就是标准 CRUD,也可以直接使用:

Route::resource('/admin/users', 'Admin/User/Index');

如果你只想保留部分资源动作,也可以这样:

Route::resource('/admin/users', 'Admin/User/Index', [
    'only' => ['index', 'show', 'store'],
]);

更新动作同时支持 PUT 和 PATCH。

按需扩展

框架本身已经支持:

  • anon.config.php + .env* 分层配置
  • 配置缓存与路由缓存
  • ORM、关联与软删除
  • JWT Auth、多 Guard、双令牌、会话管理
  • Redis 队列、失败任务、重试与清理

但这些能力不再默认堆在骨架首页示例里,而是建议你在真正需要时再接入。这样初始化项目会更干净,也更接近传统 PHP 框架的使用习惯。

生产部署建议

推荐在生产环境使用 .env.production 或由部署平台注入环境变量,并在发布完成后立即构建运行时缓存:

# 1. 安装依赖
composer install --no-dev --optimize-autoloader

# 2. 生成配置缓存
php anon config:cache

# 3. 生成路由缓存
php anon route:cache

如果你更新了以下内容,建议重新生成缓存:

  • 修改了 anon.config.php
  • 修改了 .env.production 或其他生产环境变量
  • 修改了 app/route/*.php
  • 新增、删除或重命名了控制器动作

推荐发布顺序如下:

php anon config:clear
php anon route:clear
php anon config:cache
php anon route:cache

当前 route:cache 仅支持控制器路由;如果你的生产路由中仍然包含闭包,需要先改为控制器动作再进行缓存。

官方文档

详细的框架使用指南(包括配置、容器、路由、中间件、数据库、Auth、Queue 等),请查看仓库中的 vitepress/docs。

许可证 (License)

本项目遵循 MIT 许可证。