cybe/cybe-router

简单的PHP路由库

v1.1.0 2021-01-16 01:40 UTC

This package is not auto-updated.

Last update: 2024-09-21 18:54:53 UTC


README

需求

  1. PHP 7.4 或更高版本
  2. composer

快速开始

安装

composer require cybe/cybe-router:1.1.0

基本用法

假设 ./public/ 是一个包含 index.php 文件的公开访问目录

<?php

// public/index.php

require_once __DIR__ . "/../vendor/autoload.php";

use Cybe\Router;

$router = new Router;

// GET method
$router->get("/", function() {
    echo "Hello World!";
});

// POST method
$router->post("/", function() {
    echo "This is POST";
})

$router->serve();

然后在终端中运行以下命令以启动本地服务器。

php -S localhost:9000 -t public

指南/示例

使用现有函数作为回调

<?php

// public/index.php

require_once __DIR__ . "/../vendor/autoload.php";

use Cybe\Router;

// existing function
function hello_world()
{
    echo "Hello World!";
}

$router = new Router;

$router->get("/", "hello_world");

$router->serve();

使用类

<?php

// public/index.php

require_once __DIR__ . "/../vendor/autoload.php";

use Cybe\Router;

// class
class Example
{
    public function hello_world()
    {
        echo "Hello World!";
    }
}

$router = new Router;

$router->get("/", [[new Example, "hello_world"]]);

$router->serve();

动态路由

<?php

// public/index.php

require_once __DIR__ . "/../vendor/autoload.php";

use Cybe\Router;

$router = new Router;

$router->get("/:name", function ($param) {
    echo "Hello " . $param['name'] . "!";
});

$router->serve();

中间件

<?php

// public/index.php

require_once __DIR__ . "/../vendor/autoload.php";

use Cybe\Router;

// middleware
function middleware($param, $position, $next)
{
    if ($param["name"] != "akbar") {
        echo "You're not Akbar";
    } else {
        //execute next function
        $next($param, $position);
    }
}

//controller
function controller($param)
{
    echo "Hello " . $param['name'] . "!";
}

$router = new Router;

$router->get("/:name", ["middleware", "controller"]);

$router->serve();

自定义404页面

<?php

// public/index.php

require_once __DIR__ . "/../vendor/autoload.php";

use Cybe\Router;

$router = new Router;

// setting custom 404 page
$router->set_404(function () {
    echo "Page not found";
});

$router->get("/", function () {
    echo "Hello World!";
});

$router->serve();