# WeeSpeed **Repository Path**: chenic/weespeed ## Basic Information - **Project Name**: WeeSpeed - **Description**: 适用于 php-fpm 运行环境的快速 RESTful API 开发框架 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: https://www.weespeed.cn/ - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2025-02-08 - **Last Updated**: 2025-02-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # weespeed 适用于 php-fpm 运行环境的快速 RESTful API 开发框架 ## 特征 1. 超轻量级,仅 105kb 大小 2. 适用于 php-fpm 运行环境 3. 自动化的多级 RESTful API 路由 4. 使用 Medoo 作为数据库 ORM 5. 静态实现,数据库和缓存均为静态类调用,语法提示全面,IDE 友好 6. 支持中间件 7. 支持最新的 PHP 8.4 语法,(不支持 PHP 8.0 以下版本) ### 控制器示例 ```php get("days"); if ($expire) { $date = date("Y-m-d H:i:s", strtotime("+{$expire} days")); } else { $expire = $this->get("hours"); if ($expire) { $date = date("Y-m-d H:i:s", strtotime("+{$expire} hours")); } } $data = [ 'code' => $code, 'expire_time' => $date, ]; $id = Db::insert("code", $data); if ($id) { $this->Success($code); } else { $this->Error(40401, "生成错误"); } } } ``` ## 许可 MIT,可使用于商业项目 ## 文档 - 项目文档站:https://ws.chenbont.com - English Site: https://ws.chenbont.com/en/ ## 安装 本项目不依赖 composer ,直接将项目 clone 到 php-fpm 运行环境即可。 ## 运行 ### 配置 配置文件位于 `.env` ,可以修改其中的数据库连接信息,或是增加其他项目所需的配置参数。 > 请将 test.env 复制为 .env,并修改其中的配置参数 在程序中使用 php 原生的 getenv 函数来获取配置参数。 ### 启动 项目入口文件位于 `public/index.php` 。 在本机调试时,可以使用 php 内置服务器来运行项目,命令如下: ```bash cd public php -S localhost:8080 ``` 在 vscode 中可以使用可以创建命令,命令的 tasks.json 如下: ```json { "version": "2.0.0", "tasks": [ { "label": "run dev", "type": "shell", "command": "php -S 127.0.0.1:8080", "options": { "cwd": "public" }, "problemMatcher": [] } ] } ``` 在宝塔中,网站目录设置为项目目录,运行目录设置为 `/public` ### 访问 上面的例子中,使用浏览器打开 http://127.0.0.1:8080 即可访问你的网站。 ::: info 提示 项目本身不指定服务端口,在哪个端口运行,由启动命令或是 php-fpm 来决定。 在生产环境下,通常使用 nginx 来反向代理 php-fpm。 > 对于跨域问题,你可以在 nginx 设置跨域,如果你不能修改运行环境的 nginx 设置,也可以使用 `中间件` 来处理跨域问题。 > ::: ## 演示业务数据库 项目包括了一个简单的项目管理应用,需要数据库支持,数据库表结构如下: ```sql CREATE TABLE IF NOT EXISTS `admin` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(20) DEFAULT NULL COMMENT '登录用户名', `name` varchar(20) DEFAULT NULL COMMENT '名称', `password` varchar(32) DEFAULT NULL COMMENT '密码', `is_agent_audit` tinyint(1) DEFAULT '0' COMMENT '是否可审核代理', `is_merchant` tinyint(1) DEFAULT '0' COMMENT ' 是否可管理商户', `is_agent` tinyint(1) DEFAULT '0' COMMENT '是否可维护代理商', `is_manager` tinyint(1) DEFAULT '0' COMMENT '是否后台运营', `is_super` tinyint(1) DEFAULT '0' COMMENT '是否超级管理员,可进行所有操作', `is_banned` tinyint(1) DEFAULT '0' COMMENT '是否禁用账号', `is_delete` tinyint(1) DEFAULT '0' COMMENT '是否删除', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, KEY `user_name` (`username`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员表'; CREATE TABLE IF NOT EXISTS `project` ( `id` bigint(20) NOT NULL, `user_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属用户', `name` varchar(100) NOT NULL DEFAULT '' COMMENT '项目名称', `is_delete` tinyint(1) DEFAULT '0' COMMENT '*是否删除', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '*创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '*更新时间', PRIMARY KEY (`id`), KEY `user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目表'; ``` ## 待续 1. 自动生成文档功能。 2. 自动生成 API 接口功能。 ## 参与贡献 欢迎参与贡献! 我不太熟悉开源项目管理,如果你能提供一些指导,我将不胜感激,请加我微信。 加我微信