badluck/badrouter

一个简单的受 Ruby Sinatra 路由器启发的 PHP 路由器类

v0.4.5 2023-07-26 13:05 UTC

This package is auto-updated.

Last update: 2024-09-30 01:46:48 UTC


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)

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)

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 包