如何使用PHP Tonic获得原始URI扩展



我正在使用PHP和Tonic开发一个REST API。该框架有一个很好的特性,即根据请求的URI的扩展推断内容类型。对于我正在开发的服务,了解请求文件的全名是很重要的。

如果我使用以下代码:

$this->request->uri;

对于URI,例如http://service.com/image1.jpg,我得到的只是image1

我可以直接通过$_SERVER['REQUEST_URI']获得我需要的信息,但我想使用框架的功能(如果有的话)。此外,我发现文档很差,所以,任何文档链接都会被评估。谢谢

您应该看看这里:

private function getURIFromEnvironment($options)
{
    $uri = $this->getOption($options, 'uri');
    if (!$uri) { // use given URI in config options
        if (isset($_SERVER['REDIRECT_URL']) && isset($_SERVER['SCRIPT_NAME'])) { // use redirection URL from Apache environment
            $dirname = dirname($_SERVER['SCRIPT_NAME']);
            $uri = substr($_SERVER['REDIRECT_URL'], strlen($dirname == DIRECTORY_SEPARATOR ? '' : $dirname));
        } elseif (isset($_SERVER['REQUEST_URI'])) { // use request URI from environment
            $uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
        } elseif (isset($_SERVER['PHP_SELF']) && isset($_SERVER['SCRIPT_NAME'])) { // use PHP_SELF from Apache environment
            $uri = substr($_SERVER['PHP_SELF'], strlen($_SERVER['SCRIPT_NAME']));
        } else { // fail
            throw new Exception('URI not provided');
        }
    }

具体而言:

    $uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

我只想转储$_SERVER,看看有什么可供您使用,并根据您的需要进行替换或添加。

最新更新