larkframe / core
LarkFrame: a high-performance PHP framework supporting Server, Web, Shell and Task runtime modes.
0.1.1
2026-07-04 11:28 UTC
Requires
- php: >=8.1
- ext-json: *
- ext-pdo: *
- illuminate/database: ^10.0 || ^11.0 || ^12.0
- illuminate/events: ^10.48
- illuminate/http: ^10.0 || ^11.0 || ^12.0
- illuminate/pagination: ^10.48
- illuminate/redis: ^10.0 || ^11.0 || ^12.0
- laravel/serializable-closure: ^1.0 || ^2.0
- monolog/monolog: ^2.0
- nikic/fast-route: ^1.3
- predis/predis: ^3.0
- psr/simple-cache: ^3.0
- symfony/cache: ^6.0 || ^7.0
- symfony/var-dumper: ^6.4
- twig/twig: ^3.21
Requires (Dev)
None
Suggests
- ext-event: For better performance.
- ext-redis: For redis support.
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-10-10 12:57:19 UTC
README
高性能 PHP 框架核心,支持 Server(常驻内存)、Web(PHP-FPM)、Shell(命令行)和 Task(自定义任务)四种运行模式。
特性
- 多运行模式 — Server 常驻内存 / Web FPM / Shell 命令行,一套代码多种部署;Task 常驻任务,独立运行自定义逻辑
- 高性能路由 — 基于 FastRoute,LRU 缓存路由回调
- 依赖注入 — PSR-11 容器,自动装配 + 单例绑定
- 数据库 ORM — 基于 Illuminate Database,支持多库切换、Eloquent Model
- Redis 缓存 — 连接池管理,支持多连接和数据库切换
- 队列系统 — 基于 Redis 的消息队列,支持延迟推送、失败重试
- 协程支持 — PHP Fiber 上下文隔离、连接池、内存通道
- 中间件 — 洋葱模型,支持全局/控制器/路由/注解四种注册方式
- 视图引擎 — 原生 PHP 和 Twig 双引擎
- 工具集 — 字符串、随机数、Base64、文件、图片、模拟数据等常用工具
环境要求
- PHP >= 8.1
- ext-json, ext-pdo
- 推荐:ext-redis, ext-event
安装
composer require larkframe/core
快速开始
入口文件
// server.php — Server 模式入口 require __DIR__ . '/vendor/autoload.php'; LarkFrame\App::run(LarkFrame\Consts::RUN_TYPE_SERVER); // shell.php — Shell 模式入口 require __DIR__ . '/vendor/autoload.php'; LarkFrame\App::run(LarkFrame\Consts::RUN_TYPE_SHELL); // task.php — Task 模式入口 require __DIR__ . '/vendor/autoload.php'; LarkFrame\App::run(LarkFrame\Consts::RUN_TYPE_TASK); // public/index.php — Web 模式入口 // FPM 下 cwd 取决于 fastcgi 配置,建议显式定义 ROOT_PATH(未定义时框架基于 // vendor/ 与入口文件自动向上探测) define('ROOT_PATH', dirname(__DIR__)); require ROOT_PATH . '/vendor/autoload.php'; LarkFrame\App::run(LarkFrame\Consts::RUN_TYPE_WEB);
路由
// config/route.php use LarkFrame\Route; Route::get('/hello/{name}', function ($request) { return json(['message' => 'Hello ' . $request->route()->param('name')]); });
控制器
namespace App\Controller; use LarkFrame\Request; class UserController { public function indexAction(Request $request) { return json(['users' => []]); } public function showAction(Request $request) { $id = $request->route()->param('id'); return json(['user' => ['id' => $id]]); } }
中间件
class AuthMiddleware implements \LarkFrame\MiddlewareInterface { public function process(\LarkFrame\Request $request, callable $next): \LarkFrame\Response { if (!$request->header('authorization')) { // 注意:json() 第二个参数是 JSON 编码选项而非状态码,状态码用 withStatus() return json(['error' => 'Unauthorized'])->withStatus(401); } return $next($request); } }
核心模块
| 模块 | 类 | 文档 |
|---|---|---|
| 应用入口 | LarkFrame\App |
docs/app.md |
| 路由 | LarkFrame\Route |
docs/route.md |
| 请求 | LarkFrame\Request |
docs/request.md |
| 响应 | LarkFrame\Response |
docs/response.md |
| 容器 | LarkFrame\Container |
docs/container.md |
| 数据库 | LarkFrame\Db |
docs/database.md |
| 缓存 | LarkFrame\Cache\Cache |
docs/cache.md |
| Redis | LarkFrame\Cache\Redis |
docs/redis.md |
| 队列 | LarkFrame\Queue |
docs/queue.md |
| 中间件 | LarkFrame\Middleware |
docs/middleware.md |
| 配置 | LarkFrame\Config |
docs/config.md |
| 日志 | LarkFrame\Log |
docs/log.md |
| 视图 | LarkFrame\View\ViewVarHolder |
docs/view.md |
| 工具集 | LarkFrame\Util |
docs/util.md |
| 协程 | LarkFrame\Context / LarkFrame\Coroutine\Pool |
docs/coroutine.md |
| 任务 | LarkFrame\Worker / LarkFrame\Events\Select |
docs/task.md |
辅助函数
// 配置与请求 config('app.name'); // 读取配置 request(); // 获取当前请求 input('key', $default); // 获取请求参数 // 响应 json($data); // JSON 响应 jsonp($data, 'callback'); // JSONP 响应 xml($xml); // XML 响应 redirect('/login'); // 重定向 response($body, $status); // 通用响应 view('index', $vars); // 视图响应(使用配置的引擎) raw_view('index', $vars); // 原生 PHP 模板 twig_view('index', $vars); // Twig 模板 // 路径 run_path('sub/path'); // 程序执行目录 config_path(); // 配置目录 runtime_path('logs'); // 运行时目录 path_combine($front, $back); // 拼接路径 // 安全 escape($value); // HTML 转义(防 XSS) clean($value); // 去除 HTML 标签并 trim // 其他 is_phar(); // 是否在 Phar 中运行 cpu_count(); // CPU 核心数 getRealHost(true); // 获取主机名 getClientIp(); // 获取客户端 IP(支持代理头)
项目结构
core/src/
├── Annotation/ # 注解(中间件注解)
├── Cache/ # 缓存(Redis、Symfony Cache 封装)
├── Connection/ # TCP 连接
├── Coroutine/ # 协程(Context、Pool、Channel)
├── Database/ # 数据库(Eloquent、Manager)
├── Events/ # 事件循环(Select、ext-event)
├── Protocols/ # 协议(HTTP)
├── Queue/ # 队列(Redis 驱动、Job、Worker)
├── Request/ # 请求源(Server/Web/Shell)
├── Response/ # 响应发送器
├── Util/ # 工具集(Str、Rand、Base64、File、Img、Mock、UtilProxy)
├── View/ # 视图(Raw PHP、Twig)
├── App.php # 应用入口
├── Config.php # 配置管理
├── Consts.php # 常量定义
├── Container.php # DI 容器
├── Context.php # 协程上下文
├── Db.php # 数据库门面
├── ErrorHandler.php # 错误处理器
├── File.php # 文件操作
├── Library.php # 类库基类
├── Log.php # 日志门面
├── LogFormatter.php # 日志格式化
├── Middleware.php # 中间件管理
├── MiddlewareInterface.php # 中间件接口
├── Queue.php # 队列门面
├── Request.php # HTTP 请求
├── Response.php # HTTP 响应
├── Route.php # 路由注册器
├── RouteDefinition.php # 路由定义对象
├── UploadFile.php # 上传文件
├── Util.php # 工具门面
├── Worker.php # Worker 进程
└── helper.php # 全局辅助函数
License
MIT