[开源] 发现了一个轻巧强大易用的 PHP 框架,23 个内置组件覆盖 Laravel 100% 常用功能
零 Composer 依赖、冷启动 1MB、空请求 <1ms、3 秒看懂代码
先说结论
| 指标 | H2PHP | Laravel |
|---|---|---|
| 功能覆盖 | 27/27 (100%) | 27/27 |
| 框架代码量 | ~3,500 行 | ~400,000 行 |
| Composer 依赖 | 0 | ~70 个 |
| 冷启动内存 | ~1 MB | ~15 MB |
| 空请求响应 | < 1 ms | ~10 ms |
| 学习曲线 | 3 秒看懂 | 需要系统学习 |
不是说 Laravel 不好,而是很多项目根本不需要那么重的架构。
为什么做这个?
PHP 之所以是 PHP,是因为它简单、直接、改完刷新就生效。
但 Laravel 把 PHP 写成了"伪 Java"——服务容器、依赖注入、门面模式、服务提供者……一个空请求加载几百个文件,打开一个控制器要跳 5-6 层才找到逻辑。
想要严谨架构?那应该去用 Java / Go / Rust。用 PHP 模仿 Java,等于拿了 PHP 的慢,丢了 PHP 的轻。
H2PHP 的选择:拥抱 PHP 的本质。
核心设计:目录即路由
不需要定义路由表。URL 直接映射到文件系统:
/user/login → app/user/login.php → main::index()
/post/index/view/5 → app/post/index.php → main::view(5)
/admin/dashboard → app/admin/dashboard.php → main::index()
新建一个页面?创建一个文件就行。不需要在任何地方注册。
23 个内置组件,全部零依赖
| 类别 | 组件 |
|---|---|
| 核心 | Core · Router · Bootstrap · Request · Response |
| 数据 | DB(MySQL/PostgreSQL/SQLite)· Redis · Cache(4驱动) |
| 安全 | Auth(bcrypt+JWT)· Encryption(AES-256)· Cookie(加密+SameSite)· Validator |
| 工具 | Str(18方法)· Http 客户端 · Env(.env)· Pagination · RateLimiter |
| 高级 | Event · Scheduler · Queue(DB/Redis)· Mail(SMTP)· Logger |
| 文件 | Upload · StaticFile |
每个组件一个文件,平均 100-200 行,打开就能看明白。
看看代码长什么样
控制器
<?php
class main extends \Lib\Core
{
public function index(): void
{
$posts = $this->db->table('posts')
->where('status=?', ['published'])
->order('id DESC')
->limit(10)
->fetchAll();
$this->set('posts', $posts);
$this->render('post/list');
}
public function create(): void
{
$this->csrfVerify();
$this->validate([
'title' => 'required|min:2',
'body' => 'required',
]);
$id = $this->db->table('posts')->timestamps()->insert([
'title' => $this->request->post('title'),
'body' => $this->request->post('body'),
]);
$this->response->status(201)->json(['id' => $id]);
}
}
视图(原生 PHP,不发明新语法)
<?php $this->layout('main'); ?>
<h1><?= htmlspecialchars($post['title']) ?></h1>
<p><?= nl2br($post['body']) ?></p>
<?php foreach ($comments as $c): ?>
<div><?= $c['content'] ?></div>
<?php endforeach; ?>
配置(支持 .env 环境变量)
// config/config.php
return [
'db' => [
'dsn' => 'mysql:host=' . Env::get('DB_HOST') . ';dbname=' . Env::get('DB_NAME'),
'user' => Env::get('DB_USER'),
],
'app_key' => Env::get('APP_KEY'),
'middleware' => ['Cors'],
];
完整功能对比(不是只对比 Laravel)
| 功能 | H2PHP | Laravel | ThinkPHP | CodeIgniter | Slim |
|---|---|---|---|---|---|
| MVC 路由 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 中间件 | ✅ | ✅ | ✅ | ✅ | ✅ |
| ORM / 链式查询 | ✅ | ✅ | ✅ | ✅ | ❌ |
| ORM 关联 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 数据库迁移 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 软删除 / 时间戳 | ✅ | ✅ | ✅ | ❌ | ❌ |
| 模板+布局 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 表单验证 | ✅ | ✅ | ✅ | ✅ | ❌ |
| CSRF | ✅ | ✅ | ✅ | ✅ | ❌ |
| 队列+调度 | ✅ | ✅ | ✅ | ❌ | ❌ |
| 事件系统 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 缓存(多驱动) | ✅ | ✅ | ✅ | ✅ | ❌ |
| 查询缓存 | ✅ | ❌ | ✅ | ❌ | ❌ |
| 邮件 | ✅ | ✅ | ✅ | ✅ | ❌ |
| CLI 工具 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 单元测试 | ✅ | ✅ | ✅ | ✅ | ❌ |
| Auth+JWT | ✅ | ✅ | ❌ | ❌ | ❌ |
| 加密/限流 | ✅ | ✅ | ❌ | ❌ | ❌ |
CLI 工具
php h2 make:controller user/profile # 创建控制器
php h2 make:model User # 创建模型
php h2 migrate # 数据库迁移
php h2 queue:work # 启动队列
php h2 schedule:run # 定时任务
php h2 serve # 开发服务器
php h2 key:generate # 生成密钥
php h2 test # 运行测试
同时兼容 Composer
虽然自身零依赖,但完全兼容 Composer 生态:
composer require nesbot/carbon # 日期
composer require phpmailer/phpmailer # 邮件
composer require intervention/image # 图片
composer require illuminate/support # Laravel Collection
安装后直接 use,零配置。
有实际项目吗?
有。H2CMS 是用 H2PHP 构建的完整 CMS 系统,包含:
- 前台:文章列表、详情、评论、搜索、分页、暗黑模式
- 后台:仪表盘、文章 CRUD、分类管理、评论审核、用户管理
- 30 课完整教程,从入门到精通
谁适合用?
✅ 中小型 Web 应用 — 后台管理、企业官网、内容管理
✅ API 服务 — 轻量、高性能、毫秒级响应
✅ 快速原型 — 5 分钟搭建一个完整项目
✅ 教学 — 代码简单,适合学习 PHP 框架原理
✅ PHP 7.x 项目 — 最低 PHP 7.2,不挑环境
❌ 不适合:大型微服务架构(用 Java/Go 更合适)
链接
- GitHub: github.com/tang30000/h…
- Demo (H2CMS): github.com/tang30000/h…
- 教程: 30 课完整教程,从路由到 Redis 到 Composer 生态
欢迎 Star ⭐ 和提 Issue!
如果你也觉得 PHP 应该保持简单,欢迎试试。