Skip to content

Latest commit

 

History

311 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Anon Framework Next Skeleton

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* 中。

直接修改根目录下的 .envanon.config.php 即可。

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

框架同时支持类似 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.phpindexTemplate 介绍页)
  • 路由: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'],
]);

更新动作同时支持 PUTPATCH

按需扩展

框架本身已经支持:

  • 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 许可证

About

A PHP backend API framework

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages