badluck / badrouter
一个简单的受 Ruby Sinatra 路由器启发的 PHP 路由器类
v0.4.5
2023-07-26 13:05 UTC
Requires
- php: >=7.4.33
Requires (Dev)
- phpunit/phpunit: 9.6.x-dev
README
一个受 Ruby 的 Sinatra 路由器启发的极简路由器。
在此处访问官方文档页面: https://badrouter.badluck.io
安装
1. 在您的项目目录中运行 composer require badluck/badrouter
以安装包及其依赖项。
2. 需要自动加载器。在您的 PHP 文件开头,通过添加以下代码来需要 Composer 自动加载器:
require_once('./vendor/autoload.php');
3. 使用 Router
静态类。
您可以使用 ::get
、::post
、::put
和 ::delete
。BadRouter 支持使用 {大括号}
的动态路由。
Router::get('/user/{id}', function ($id) { $locals = [ "user_id" => $id ]; Router::render('/user', $locals); });
4. 配置视图和公共目录。
public
目录是路由器搜索静态文件的位置(如果 URI 不是一个路由)。views
目录是 Router::render
渲染页面时搜索的位置。
Router::set_public('public'); Router::set_views('views');
5. 路由器配置完成后,运行它。
Router::run();
完整使用示例
<?php require_once('./vendor/autoload.php'); use BadRouter\Router; Router::use(function() { // Middleware }); // Setup routes Router::get('/', function() { $locals = [ 'message' => 'Hello world!' ]; Router::render('/home', $locals); }); Router::get('/login', function() { Router::render('/login', [], null); }); Router::get('/about', function() { $locals = [ 'message' => 'We are awesome!', ]; Router::render('/about', $locals); }); Router::get('/message', function() { Router::set_content_type('json'); Router::json(['message' => 'About Us']); }); Router::get('/redirectMe', function() { Router::redirect('/about'); }); Router::get('/user/{id}', function ($id) { $locals = [ "id" => $id ]; Router::render('/user', $locals); }); // Restricted /admin route function restricted() { if (!isset($_SESSION['user'])) { Router::redirect('/login'); return false; } } Router::get('/admin', function() { restricted(); Router::render('/admin/page'); }); // POST Router::post('/api/login', function() { Router::json([ 'success' => true, ]); }); // Set 404 page Router::set_error(404, function() { $locals = [ 'route' => parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), ]; Router::render('/404', $locals, null); }); // Configure directories Router::set_public('public'); Router::set_views('views'); // Run Router::run();
变更日志
日志类型
- 新增
- 更改
- 修复
- 移动
- 删除
- 重命名
- 更新
v0.4.5 (2023-07-26)
- 添加了样式规则
v0.4.4 (2023-05-03)
- 修复了使用相对目录路径获取视图时的错误
v0.4.3 (2023-05-03)
- 修复了 404 的不正确的 Content-Type
v0.4.2 (2023-05-03)
- 修复了 URI 解析中的错误
v0.4.1 (2023-05-02)
- 修复了文件搜索路径缺少斜杠的错误
v0.4.0 (2023-05-01)
- 添加了 74 种 MIME 类型
- 更改了自动获取的静态文件,不再需要指定 PUBLIC_PATH
v0.3.4 (2023-04-26)
- 删除了 Router::json 输入数据类型
v0.3.3 (2023-04-24)
- 修复了
$server['HTTP_REFERER']
的空合并警告
v0.3.2 (2023-04-18)
- 将 Composer PHP 要求从 "^7.4.33" 修复为 ">=7.4.33"
v0.3.1 (2023-04-17)
- 修复了路由未检查
Request
对象的问题 - 修复了
Router::render
的$layout
参数不可为 null
v0.3.0 (2023-04-17)
- 添加了
Request
类 - 将方法参数添加了变量类型说明
- 将方法返回值添加了变量类型
- 更新了中间件
use
以指定Closure(Request)
类型 - 更新了文档,包括变更日志
v0.2.5 (2023-04-13)
- 更新了文档,并提到了 https://badrouter.badluck.io
v0.2.4 (2023-04-13)
- 修复了
Router::set_base_path
中的另一个错误 - 将示例网站从该包移动到其自己的仓库 https://github.com/BadLuckSoftware/BadRouter-Example
- 将
$request
字段更新为如果$_SERVER
字段为 null,则为 null - 将
Router::redirect
更新为使用BASE_PATH
而不是self::$base_path
v0.2.3 (2023-04-13)
- 添加了 GitHub Action 以将示例部署到 https://badrouter.badluck.io
- 修复了
Router::set_base_path
中的错误
v0.2.2 (2023-04-13)
- 将
$request
参数添加到中间件中 - 添加了
VIEWS_PATH
全局变量 - 添加了
Router::json
方法 - 将目录
example_website
重命名为example
- 更新了示例网站以反映
BadRouter
的当前功能 - 将
Router::set_base_path
更新为将空路径默认为 '/
'
v0.2.1 (meow)
- 牛叫“哞哞”
v0.2.0 (2023-04-11)
- 添加了全局变量
BASE_PATH
- 添加了方法
Router::set_base_path
- 添加了 Composer 关键字
- 将全局变量
PUBLIC_DIR
改为PUBLIC_PATH
- 将
BadRouter
仓库移动到badluck
命名空间下的BadLuckSoftware
- 更新了 Composer 描述
v0.1.3 (2023-04-06)
- 更新了文档
v0.1.2 (2023-04-05)
- 将文件
BadRouter.php
重命名为Router.php
- 更新了 readme 中的示例
- 更新了示例网站以使用正确的 Router 名称
v0.1.1 (2023-04-05)
- 添加了遗忘的命名空间
- 将类
BadRouter
重命名为Router
v0.1.0 (2023-04-05)
- 添加了初始的 BadRouter Composer 包