claud/router

用于在PHP中创建路由的包

v2.1.0 2024-07-30 19:30 UTC

This package is auto-updated.

Last update: 2024-09-30 19:50:23 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

路由组件 是一个简单灵活的工具,用于管理PHP应用中的路由。此组件允许您定义路由并关联控制器函数或方法,简化了创建友好URL的Web应用。

特性

  • 易于定义路由
  • 支持带参数的路由
  • 将控制器函数或方法关联到路由
  • 支持请求和响应
  • 支持每个路由的全球和局部中间件

安装

您可以通过Composer安装此组件。请在终端中运行以下命令

composer composer require claud/router

使用方法

以下是如何在PHP项目中使用此组件的示例

<?php

require_once 'vendor/autoload.php';

use Router\Router\Router;

$router = new Router();

$router->addRoute('/', function () {
    echo 'Bem-vindo à página inicial!';
});

//Para que o componente router encontre o controller, passe o caminho completo
$router->addRoute('/perfil/{id}', [App\Controller\PerfilController::class,'show']);

$router->prefix('/users', function(Router $router) {
    $router->addRoute('/edit/{id}', function ($id) {
        return "Rota com prefixo e parâmetro dinâmico {$id}";
    });

    $router->addRoute('/update/{id}', function ($id) {
        return "Rota com prefixo e parâmetro dinâmico {$id}";
    });
});

$router->run();

默认情况下,使用的HTTP方法将是GET,但您可以通过在addRoute()函数中传递第三个参数(字符串$method)来切换方法

<?php

require_once 'vendor/autoload.php';

use Router\Router\Router;

$router = new Router();

$router->addRoute('/', [App\Controller\PerfilControlle::class, 'store'], 'POST');

$router->run();

您可以使用中间件来拦截请求。要创建中间件,只需实现同一包中的MiddlewareInterface接口。

除了接口合同外,我们还为您的实现提供了Request和Response类。

<?php

require_once 'vendor/autoload.php';

use Router\Router\Router;
use Router\Contracts\MiddlewareInterface;

class GlobalMiddleware implements MiddlewareInterface
{
    public function handle(Request $request, callable $next)
    {
        if (!isset($_SESSION['user'])) {

            return 'not authorized';
        }

        return $next($request);
    }
}

class LocalMiddleware implements MiddlewareInterface
{
    public function handle(Request $request, callable $next)
    {

        return $next($request);
    }
}

$router = new Router();

//Para adicionar globalmente
$router->addMiddleware(new GlobalMiddleware());

// Para adicionar especifico para a rota
$router->addRoute('/', [App\Controller\PerfilControlle::class, 'store'], 'POST', [new LocalMiddlware()]);

$router->run();

贡献

如果您想为此项目做出贡献,请按照以下步骤操作

  1. 对存储库进行分支
  2. 创建一个具有描述性的分支: git checkout -b minha-funcionalidade
  3. 进行更改,并在代码中添加相关注释
  4. 确保执行单元测试(如果适用)
  5. 发送一个包含您更改的pull request

许可证

本项目采用MIT许可证。

联系方式

如果您有任何疑问或需要帮助,请随时联系