轻量级 PHP 路由器

V1.1.0 2024-08-01 00:08 UTC

This package is auto-updated.

Last update: 2024-10-01 15:24:38 UTC


README

一个轻量级且灵活的 PHP 路由器,支持动态路由参数。

PHP Version

要求

  • 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 许可证授权。