yii\web\Request::resolvePathInfo PHP 메소드

resolvePathInfo() 보호된 메소드

A path info refers to the part that is after the entry script and before the question mark (query string). The starting slashes are both removed (ending slashes will be kept).
protected resolvePathInfo ( ) : string
리턴 string part of the request URL that is after the entry script and before the question mark. Note, the returned path info is decoded.
    protected function resolvePathInfo()
    {
        $pathInfo = $this->getUrl();
        if (($pos = strpos($pathInfo, '?')) !== false) {
            $pathInfo = substr($pathInfo, 0, $pos);
        }
        $pathInfo = urldecode($pathInfo);
        // try to encode in UTF8 if not so
        // http://w3.org/International/questions/qa-forms-utf-8.html
        if (!preg_match('%^(?:
            [\\x09\\x0A\\x0D\\x20-\\x7E]              # ASCII
            | [\\xC2-\\xDF][\\x80-\\xBF]             # non-overlong 2-byte
            | \\xE0[\\xA0-\\xBF][\\x80-\\xBF]         # excluding overlongs
            | [\\xE1-\\xEC\\xEE\\xEF][\\x80-\\xBF]{2}  # straight 3-byte
            | \\xED[\\x80-\\x9F][\\x80-\\xBF]         # excluding surrogates
            | \\xF0[\\x90-\\xBF][\\x80-\\xBF]{2}      # planes 1-3
            | [\\xF1-\\xF3][\\x80-\\xBF]{3}          # planes 4-15
            | \\xF4[\\x80-\\x8F][\\x80-\\xBF]{2}      # plane 16
            )*$%xs', $pathInfo)) {
            $pathInfo = utf8_encode($pathInfo);
        }
        $scriptUrl = $this->getScriptUrl();
        $baseUrl = $this->getBaseUrl();
        if (strpos($pathInfo, $scriptUrl) === 0) {
            $pathInfo = substr($pathInfo, strlen($scriptUrl));
        } elseif ($baseUrl === '' || strpos($pathInfo, $baseUrl) === 0) {
            $pathInfo = substr($pathInfo, strlen($baseUrl));
        } elseif (isset($_SERVER['PHP_SELF']) && strpos($_SERVER['PHP_SELF'], $scriptUrl) === 0) {
            $pathInfo = substr($_SERVER['PHP_SELF'], strlen($scriptUrl));
        } else {
            throw new InvalidConfigException('Unable to determine the path info of the current request.');
        }
        if (substr($pathInfo, 0, 1) === '/') {
            $pathInfo = substr($pathInfo, 1);
        }
        return (string) $pathInfo;
    }

Usage Example

예제 #1
0
 public function resolvePathInfo()
 {
     if ($this->getUrl() === $this->adminUrl) {
         return "";
     } else {
         return parent::resolvePathInfo();
     }
 }
All Usage Examples Of yii\web\Request::resolvePathInfo