【问题标题】:How to get the original URI extension using PHP Tonic?如何使用 PHP Tonic 获取原始 URI 扩展?
【发布时间】:2013-08-12 14:18:10
【问题描述】:

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

如果我使用以下代码:

$this->request->uri;

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

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

【问题讨论】:

    标签: php tonic


    【解决方案1】:

    你应该看看这里:

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

    【讨论】:

    • 谢谢,我会试试的,但我试图想出一种在不更改框架代码的情况下获取此信息的方法。
    • 是的,据我所知(我没看太久)没有内置任何东西。
    • 很少有人使用补品,有问题可以帮忙吗? stackoverflow.com/questions/34457064/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 2011-12-06
    • 2013-05-23
    • 1970-01-01
    • 2018-01-25
    • 2011-06-04
    相关资源
    最近更新 更多