yahyamallak / masar
轻量级 PHP 路由器
V1.1.0
2024-08-01 00:08 UTC
Requires
- php: ^8.0
Requires (Dev)
- phpunit/phpunit: ^11.3@dev
This package is auto-updated.
Last update: 2024-10-01 15:24:38 UTC
README
一个轻量级且灵活的 PHP 路由器,支持动态路由参数。
要求
- PHP 8.0 或更高版本
特性
- 简单直观的 API
- 支持 (GET / POST / PUT / PATCH / DELETE) 请求
- 动态路由参数
- 支持参数规则
- 易于集成和扩展
- 支持命名路由
- 支持控制器
- 支持中间件
安装
运行以下命令安装库
composer require yahyamallak/masar
用法
1. 基础设置
require_once dirname(__DIR__) . "/vendor/autoload.php"; use Masar\Http\Request; use Masar\Routing\Router; $router = new Router(); // Define routes $router->get('/', function() { return "Welcome to the homepage!"; }); $router->get('/about', function() { return "About us page"; }); $router->post('/submit', function() { return "Form submitted"; }); $router->put('/users/{id}/change', function() { return "User " . $id . " has been edited."; }); $router->patch('/users/{id}/edit', function($id) { return "edit name of user : " . $id; }); $router->delete('/users/{id}/delete', function($id) { return "delete user " . $id; }); // Create a request object $request = new Request(); // Dispatch the router try { $router->dispatch($request); } catch (Exception $e) { echo '404 Not Found'; }
2. 使用路由参数
您可以使用花括号在路由中定义动态段
$router->get('/user/{id}', function($id) { return "User profile for user with ID: " . $id; }); $router->get('/post/{slug}', function($slug) { return "Displaying post: " . $slug; });
3. 使用 Where 为参数规则
支持的规则
- ":digit"
- ":number"
- ":letter"
- ":word"
- ":slug"
$router->get('/user/{id}', function($id) { return "User profile for user with ID: " . $id; })->where(["id" => ":number"]);
4. 使用命名路由
命名路由
$router->get('/users', function() { return "All users."; })->name("users");
获取路由名称
use Masar\Routing\Router; Route::get("users");
5. 使用控制器
在使用控制器之前,您需要快速执行一些步骤来告诉路由器它们的位置。
步骤 1 : 创建一个配置文件或只是一个包含一些配置的数组。
您创建一个关联数组,键为 (controllers | middlewares),值为它们的命名空间。
$config = [ "controllers" => "App\Controllers", "middlewares" => "App\Middlewares" ];
步骤 2 : 将配置传递给路由器。
您只需要将配置数组传递给路由器,它将处理其余部分。
$router = new Router($config);
步骤 3 : 使用控制器定义路由
示例 1
$router->get('/profile/{id}', [UserController::class, "index"]);
示例 2
$router->patch('/posts/{id}/edit', "PostController@edit");
6. 使用中间件
$router->get("/admin", function() { return "Admin dahsboard."; })->middleware("auth");
7. 使用路由分组
示例 1
$router->middleware("auth")->group(function() use($router) { $router->get("/", [HomeController::class, "index"]); $router->get("/about", [AboutController::class, "index"]); });
示例 2
$router->middleware(["auth", "role"])->group(function() use($router) { $router->get("/", [HomeController::class, "index"]); $router->get("/profile", [UserController::class, "profile"]); });
示例 3
$router->prefix("admin")->group(function() use($router) { $router->get("/", [AdminController::class, "index"]); $router->get("/settings", [AdminController::class, "settings"]); });
贡献
欢迎贡献!请随时提交 Pull Request。
许可
此项目是开源软件,使用 MIT 许可证授权。