stack/url-map

该软件包已被放弃,不再维护。没有建议替代包。

URL 映射中间件。

v1.2.0 2019-06-20 08:03 UTC

This package is not auto-updated.

Last update: 2024-08-03 13:33:18 UTC


README

Build Status

UrlMap 类接收一个将路径映射到应用程序的数组,并相应地分配。这个类可以插入到中间件堆栈构建器中,例如 stack/builder

安装

使用 Composer 安装

$ composer require stack/url-map

示例

假设我们有一个 Silex 应用程序,并想在子路径 /blog 映射一个实现 HttpKernelInterface 的博客应用程序。

<?php

use Symfony\Component\HttpFoundation\Request;
use Silex\Application;

$app = new Application();
$app->get('/', function () {
    return "Main Application!";
});

$blog = new Application();
$blog->get('/', function () {
    return "This is the blog!";
});

$map = [
    "/blog" => $blog
];

$app = (new Stack\Builder())
    ->push('Stack\UrlMap', $map)
    ->resolve($app);

$request = Request::createFromGlobals();

$response = $app->handle($request);
$response->send();

$app->terminate($request, $response);

如果你现在导航到 /blog,你应该在浏览器中看到 This is the blog!

UrlMap 会覆盖 SCRIPT_NAMESCRIPT_FILENAMEPHP_SELF 以指向映射的路径。这也确保了路径信息被剥离。

这也意味着使用 Symfony 路由组件进行路由和 URL 生成的应用程序不需要任何适配。

使用其他路由方式的应用程序应在生成的 URL 前缀返回请求的 getBaseUrl() 方法的结果。URL 映射还设置了一个 stack.url_map.prefix 请求属性,如果您不想依赖于请求的基本 URL,则可以使用该属性。