alex-lee / fastswoole
There is no license information available for the latest version (v1.1.3) of this package.
基于swoole写的一个MVC框架,功能正在逐步完善中
v1.1.3
2021-09-15 08:11 UTC
Requires
- alex-lee/php-helper: ^1.2
- alex-lee/swooleframe: ^1.0
README
基于 Swoole 的常驻内存 MVC 框架,功能正在逐步完善中。
主要特性
- 控制反转容器 DI
- APP 流程控制(模块/控制器/方法路由)
- 控制器
- ORM 模型类
- 异常类(错误码集中管理)
- URL 生成类
- 视图类
- 一键协程化(
SWOOLE_HOOK_ALL) - PDO / Redis 连接池(Worker 进程启动时按配置自动创建并注入 DI 容器)
- 接口加签校验(可配置加密方法链、时间戳超时)
- 接口限流(单位时间容量控制)
- 静态文件处理与 CORS 跨域支持
环境要求
| 依赖 | 版本 | 说明 |
|---|---|---|
| PHP | >= 7.2 | 需启用 PDO、Redis 扩展(按需) |
| Swoole | >= 4.4 | 使用 Swoole\Database\PDOPool 等特性 |
| Composer | - | 依赖管理 |
安装
composer create-project alex-lee/fastswoole fastswoole
进入项目目录,复制环境变量模板并根据实际情况修改:
cp .example.env .env
如果需要更新框架使用
composer update alex-lee/swooleframe
快速开始
启动 HTTP 服务:
php bin/http_server.php
访问 http://127.0.0.1:9501(端口见 .env 中 [SWOOLE] 节的 HTTP_PORT)。
内置示例路由:
| 路径 | 说明 |
|---|---|
/ |
输出 HTML 欢迎页 |
/index/hello |
输出 JSON |
/index/coroutine |
协程睡眠 1 秒后响应(验证一键协程化) |
/index/systemError |
抛出系统异常(验证异常处理) |
目录结构
fastswoole/
├── app/ # 应用代码
│ ├── exception/ # 异常定义(错误码集中管理)
│ └── index/ # index 模块
│ ├── controller/ # 控制器
│ └── model/ # 模型(ORM)
├── bin/
│ └── http_server.php # 服务启动入口
├── public/ # 静态文件根目录
├── runtime/ # 运行时日志(不提交,安装后自动创建)
├── .example.env # 环境变量模板
├── composer.json
└── LICENSE
配置说明
所有配置通过项目根目录 .env 文件管理(参考 .example.env):
| 配置节 | 用途 |
|---|---|
[SWOOLE] |
监听地址与端口 |
[APP] |
调试模式、默认模块/控制器/方法 |
[DATABASE] |
MySQL 连接与连接池(USE 是否启用,POOL 每进程连接数,0 为不开启) |
[REDIS] |
Redis 连接与连接池 |
[SIGN] |
接口加签校验(盐值、加密方法、时间戳超时、签名字段) |
[LIMIT] |
接口限流(单位时间与容量) |
控制器示例
<?php namespace App\index\controller; use App\exception\SystemException; use Fastswoole\core\Controller; class Index extends Controller { public function index() { $this->app->html('<h1>Hello Swoole.</h1>'); } public function hello() { $this->app->json(['hello' => 'fastswoole']); } public function systemError() { SystemException::throwException(SystemException::SYSTEM_ERROR); } }
文档
暂无
参与开发
请参阅 核心框架包。
版权信息
遵循 Apache2 开源协议发布,并提供免费使用。