franzose/gimme-url

PHP League Route 的 URL 生成器。

v1.0 2019-08-13 14:10 UTC

This package is auto-updated.

Last update: 2024-09-14 02:46:08 UTC


README

Gimme URL 是为 League Route 库而设计的缺失 URL 生成器。它能够生成相对和绝对路径到命名路由。

安装

使用 Composer 安装 Gimme URL

composer install franzose/gimme-url

设置和用法

URL 生成器需要您提供 RouterRequestContext 实例。后者从 Psr\Http\Message\ServerRequestInterface 实例中收集信息,并用于构建到命名路由的绝对路径。

<?php

use GimmeUrl\RequestContext;
use GimmeUrl\Router;
use GimmeUrl\UrlGenerator;
use Zend\Diactoros\ServerRequestFactory;

$router = new Router();
$router->get('/foo/{bar}', function () {
    //
})->setName('foo_route');

// Let's say the request is secure and is made at example.com on 8080 port
$request = ServerRequestFactory::fromGlobals($_SERVER, $_GET, $_POST, $_COOKIE, $_FILES);
$context = RequestContext::fromRequest($request);
$generator = new UrlGenerator($router, $context);

// Then you'll get this
$generator->relative('foo_route', ['bar' => '123']); // '/foo/123'
$generator->relative('foo_route', ['bar' => '123', 'qux' => 'doo']); // '/foo/123?qux=doo'
$generator->absolute('foo_route', ['bar' => '456']); // 'https://example.com:8080/foo/456'
$generator->absolute('foo_route', ['bar' => '456', 'qux' => 'doo']); // 'https://example.com:8080/foo/456?qux=doo'