mark-veres/bedouin

此包的最新版本(1.0.1)没有提供许可信息。

基于文件的PHP路由系统。

1.0.1 2024-09-01 09:14 UTC

This package is auto-updated.

Last update: 2024-10-01 09:28:06 UTC


README

bedouin

基于文件的PHP路由系统。

两个文件

  • cartograph.php 脚本生成地图文件
  • bedouin.php 脚本根据地图文件进行路由

安装

composer require mark-veres/bedouin

示例设置

# index.php
require_once "bedouin.php";

$router = new \Bedouin\Router;
$router->loadMap("map.json");
$route = $router->currentRoute();
if (isset($route->file)) include $route->file;
# gen_map.php
require_once "./cartograph.php";
$cart = new \Bedouin\Cartograph;
$cart->root_dir = __DIR__;
$cart->route_folders = ["./routes", "./api"];
$cart->printMap("map.json");

用法

  • bedouin.phpcartograph.php文件复制到所需的目录
  • 创建routesstatic目录
  • 创建一个index.php文件来处理所有请求
  • 将所有请求重定向到index.php
  • 创建另一个PHP文件,该文件将使用cartograph API生成地图

目录结构

404页面

  • routes文件夹中创建一个404.php文件
  • 此文件不支持自定义HTTP方法

静态文件

  • 将所有静态文件放在static目录中
  • 通过/static/* URL访问这些文件
  • 文件名区分大小写和扩展名

访问路由参数

  • 给定路由/posts/[slug]
  • 和URL /posts/test
$router = new \Bedouin\Router;
// ...
print_r($router->params);
/*
  Array ( [slug] => test )
*/

中间件

  • 创建以.mw.php.mw.get.php(或任何HTTP方法)结尾的文件
  • 中间件将绑定到放置在该目录中的索引处理器

注意

即将推出

  • 地图分割(处理许多路由时的性能优化)
  • 模板

提示

在Apache服务器上将所有请求重定向到bedouin.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php

提示

使用PHP内置服务器将所有请求重定向到bedouin.php

php -S localhost:8080 bedouin.php

提示

通过访问特定路由来重新生成地图。

# index.php
require_once "bedouin.php";

if ($_SERVER["REQUEST_URI"] == "/your/custom/path") {
  require_once "./cartograph.php";
  $cart = new \Bedouin\Cartograph;
  $cart->printMap("map.json");
}

$router = new \Bedouin\Router;
$router->loadMap("map.json");
$route = $router->currentRoute();
if (isset($route->file)) include $route->file;