slabphp/router

SlabPHP 路由器

v0.1.6 2018-02-11 00:00 UTC

This package is auto-updated.

Last update: 2024-09-09 13:56:58 UTC


README

此路由器库将接受特别制作的 XML 文件,构建一个路由表,并确定当前 REQUEST_URI 参数是否可以匹配路由。

与其他许多现代开源路由器相比,这个路由器可能相形见绌。我们非常清楚 XML 在许多情况下是受到反对的。这个库是多年前编写的。请参阅 SlabPHP 的主要文档以获取有关此和所有 SlabPHP 库的更多信息。

路由器配置和用法

首先导入库

composer require slabphp/router

然后配置并实例化您的路由器。

$configuration = new \Slab\Router\Configuration();

$configuration
    ->setConfigurationPaths('/framework/configs','/site/configs'])
    ->addRouteFile('default.xml');

$router = new \Slab\Router($configuration);

接下来编写您的路由文件并解析一些路由!

$router->determineSelectedRoute();
$route = $router->getSelectedRoute();

根据 $_SERVER['REQUEST_URI'] 的值以及 /framework/configs/default.xml 和 /site/configs/default.xml 中的路由,您将获得 false(404 状态)或 \Slab\Router\Route 对象。

路由创建

静态路由

根据您如何配置路由器,路由文件可能位于任何位置。但这里是一个路由文件的示例

<?xml version="1.0" encoding="UTF-8" ?>
<routes>
    <route>
        <path>/</path>
        <name>Homepage</name>
        <class>\Namespace\Path\To\Your\Controller</class>
        <parameters>
            <someRouteParameter><![CDATA[This could be anything really. Maybe a page title?]]></testValue>
        </parameters>
    </route>
</routes>

动态路由(模式验证)

您还可以有使用模式验证器的动态路由。例如

<route>
    <path>/something</path>
    <name>A Dynamic URL Path</name>
    <class>\Some\Controller</class>
    <pattern>/value/{string:someVar}/thing/{numeric:intVar}</pattern>
    <parameters>
        <testValue>1</testValue>
        <testString>string</testString>
    </parameters>
</route>

这将匹配看起来像 /something/value/my-first-string/thing/32 的 URL。注意 {string:someVar}{numeric:intVar}。这些是告诉 SlabPHP 路由器使用特定验证器类和变量名称存储它的机制。您可以创建自己的自定义验证器并简单地指定它们的完整类名。例如,一篇博客文章可能看起来像这样

<route>
    <name>Blog URL</name>
    <class>\Some\Controller</class>
    <path>/</path>
    <pattern>/{numeric:year}}/{numeric:month}/{\My\Blog\Router\Validators\PostSlug:postSlug}</pattern>
    <parameters>
        <testValue>1</testValue>
        <testString>string</testString>
    </parameters>
</route>

只要 \My\Blog\Router\Validators\PostSlug 实现正确的接口并返回 true/false,您就可以在文章 slug 错误时拒绝此路由。

有一些内置验证器,但许多是特定于应用程序的。

  • string - 匹配一组字符的字符串;a-z,0-9,下划线,加号 + 和空格。
  • date - 匹配任何可以在 new \DateTime() 构造函数中工作的日期
  • numeric - 匹配一个数字
  • value - 匹配一个确切值,这在模式字段中的特定 URL 段值内部使用
  • any - 匹配任何内容