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

时间:2013-08-12 14:18:11

标签: php tonic

我正在使用PHP和Tonic开发REST API。该框架具有一个很好的特性,它是基于所请求的URI的扩展的Content-Type的推断。   对于我正在开发的服务,了解所请求文件的全名非常重要。

如果我使用以下代码:

$this->request->uri;

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

我可以直接通过$_SERVER['REQUEST_URI']获取我需要的信息,但我想使用框架的设施(如果有的话)。   此外,我发现文档很差,因此,任何文档链接也会被认可。感谢。

1 个答案:

答案 0 :(得分:2)

你应该看看这里:

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并查看可供您使用的内容,并根据您的需要进行更换或添加。