emant / brownie-php
一个受Express.js启发的微型路由框架
Requires
- ralouphie/mimey: ^1.0
Requires (Dev)
- phpunit/phpunit: ^10
README
一个微型PHP路由框架
BrowniePHP 是一个受 Express.js 启发的轻量级 PHP 路由框架,它提供了一种简单直观的方式来处理 HTTP 请求和为您的 Web 应用程序定义路由。它旨在简洁而强大,允许您快速构建 RESTful API 或轻松处理各种 HTTP 方法。
功能
- 使用 HTTP 方法(GET、POST、PATCH、PUT、DELETE)定义路由
- 处理请求预处理的中介函数
- 从路由 URL 中提取参数
- 自动解析 JSON 请求体
- 轻松访问请求上下文和头信息
- 简单且易于集成到现有 PHP 项目中
安装
您可以使用 Composer 安装 BrowniePHP。在您的项目目录中运行以下命令
composer require emant/brownie-php
入门
要定义路由,创建 Router
类的实例,并根据所需的 HTTP 方法使用适当的方法
use Emant\BrowniePhp\Router; $router = new Router(); $router->get('/users', function ($ctx) { // Handle GET /users request }); $router->post('/users', function ($ctx) { // Handle POST /users request }); $router->put('/users/{id}', function ($ctx) { // Handle PUT /users/{id} request // Access the {id} parameter using $ctx['params']['id'] }); // ... Define more routes
您可以使用 use
方法添加全局中介函数
$router->use(function ($ctx) { // Perform preprocessing logic here // Access request context via $ctx array });
Router
类提供了一个 all
方法,允许您定义一个匹配所有 HTTP 方法的路由。这意味着无论使用的 HTTP 方法如何,任何传入的请求都将匹配。它提供了一种方便的方式来处理常见功能或应用中介件,而不管具体方法是哪种。
$router->all('/common-route', function ($ctx) { // Common logic or middleware for all routes });
要启动路由过程,调用 run 方法
$router->run();
这将匹配传入的请求到定义的路由并执行相应的路由处理程序或中介函数。
在路由处理程序或中介函数内部,请求上下文作为名为 $ctx
的关联数组可用。您可以通过此数组访问各种请求属性,如方法、路径、查询参数、请求体和头信息。
挂载嵌套路由
Router
类提供的 all
方法允许您在特定路径上挂载嵌套路由。这在你想要将相关路由组合在共同的前缀下时非常有用,或者当你想要将某些路由的处理委托给单独的路由实例时。
要挂载嵌套路由,请遵循以下步骤
- 使用
Router
类构造函数创建嵌套路由的实例。
$nestedRouter = new Router(); $nestedRouter->get('/subroute', [$controller, 'index']); $nestedRouter->post('/subroute', [$controller, 'create']); // Add more routes as needed...
- 使用
all
方法将嵌套路由挂载到主路由的特定路由上。
$mainRouter = new Router(); $mainRouter->all('/prefix', [$nestedRouter, 'run']); $mainRouter->get('/home', [$homeController, 'index']); $mainRouter->post('/users', [$userController, 'create']); // ...
- 运行主路由以开始处理传入的请求。
$mainRouter->run();
Utils 类
BrowniePHP 中的 Utils 类提供了一系列常用的实用方法,这些方法在 Web 开发中常用。以下是一些该类中可用的关键方法
send_json($data)
此方法将 JSON 编码的数据作为响应发送给客户端。它通过检查请求 URL 中的回调参数来支持 JSONP。如果参数存在,则将响应包裹在回调函数中。否则,以标准 JSON 发送响应。此方法可用于以一致和结构化的方式将 JSON 数据发送回客户端。
enable_cors($origin = '*')
此方法通过在响应中设置必要的头部来实现跨源资源共享(CORS)。它允许来自不同源(origin)的请求访问您的应用程序资源。$origin参数指定了允许的源或多个源。默认情况下,它设置为'*',允许来自任何源的请求。此方法相应地设置Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Allow-Headers, 和 Access-Control-Allow-Methods
头部。
错误处理器
Utils类还包含错误处理方法,这些方法简化了返回错误响应的过程。这些方法便于向客户端发送错误消息和适当的HTTP状态码。
server_error($error_type, $description, $status_code)
此方法根据指定的错误类型、描述和HTTP状态码生成错误响应。它构造一个包含错误详情的关联数组,并设置适当的状态码。然后使用send_json
方法以JSON格式发送错误响应。
unknown_error()
unknown_error方法是对server_error
方法的一个便利包装器。它通过提供预定义的错误类型、描述和HTTP状态码,简化了内部服务器错误的处理。
not_found()
与unknown_error
方法类似,not_found
是对server_error
方法的一个便利包装器。它通过提供预定义的错误类型、描述和HTTP状态码,简化了资源未找到错误的处理。
贡献
欢迎贡献!如果您发现任何问题或有改进建议,请在该GitHub仓库上提交问题或提交拉取请求。
许可证
BrowniePHP是开源软件,受MIT许可证许可。