路由的抽象定义

0.0.5 2021-03-26 10:59 UTC

This package is auto-updated.

Last update: 2024-09-26 20:57:31 UTC


README

安装

$ composer require routing-interop/route

使用

<?php

use Interop\Routing\Route\RouteCollection;

$routes = (new RouteCollection)
    ->get('/blog',        [BlogController::class, 'index'])
    ->get('/blog/{slug}', [BlogController::class, 'show'])
    ->post('/blog',       [BlogController::class, 'create'])
;

思考

  • 大多数路由库使用以下路由声明格式

    addRoute(<HTTP method>, <path>, <callable handler>)
    
  • path 可以是一个字符串、正则表达式或自定义格式。它通常包含所有变量部分或路径,类型约束。

  • 每个路径部分是一个段(典型的URI语言)。

  • 简单的字符串段是静态的,而其他的是动态的。

  • path 中未包含的其他路由约束

    • 主机
    • 方案
    • 端口
  • 一个动态段可以是可选的,并具有默认值

  • 为大量路由使用共同的静态前缀非常有用

  • 声明具有相同路径但不相同方法的组路由可能很有用

  • 当没有匹配到路由时应该怎么办?错误的URI,错误的请求方法...
    添加默认工作流程和响应可能很有用。

  • 给路由命名似乎是过时的。等等...不,它不是:我们如何在不命名的情况下生成URI呢!?

  • 内容协商不在路由的范围内

  • 参数转换(从 /post/{slug}controller(BlogPost $post))超出了范围。