请告诉什么脚本使用 zend 框架来定义当前 URL?更确切地说,我对使用 ZEND 定义域名感兴趣: this $_SERVER['HTTP_HOST']
还是 this
$_SERVER['SERVER_NAME']
?(或者可能是其他东西)?
PS(我在文档中搜索但没有找到,(我不知道这个框架),我也在谷歌搜索,但也没有找到我的问题的答案?)
请告诉什么脚本使用 zend 框架来定义当前 URL?更确切地说,我对使用 ZEND 定义域名感兴趣: this $_SERVER['HTTP_HOST']
还是 this
$_SERVER['SERVER_NAME']
?(或者可能是其他东西)?
PS(我在文档中搜索但没有找到,(我不知道这个框架),我也在谷歌搜索,但也没有找到我的问题的答案?)
尝试使用:$this->getRequest()->getRequestUri()
获取当前请求的 URI。
在视图脚本中使用:$this->url()
获取当前 URL。
或者通过静态集成 Zend Controller 前端通过实例使用:
$uri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
您可以通过单例获取 URI 实现的值来获取 request() 数据的值:
$request = Zend_Controller_Front::getInstance()->getRequest();
$url = $request->getScheme() . '://' . $request->getHttpHost();
在视图上将其用作:
echo $this->serverUrl(true); # return with controller, action,...
您应该避免使用硬编码,例如示例(不要使用!):
echo 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'];
而不是这个例子在视图上使用:
$uri = $this->getRequest()->getHttpHost() . $this->view->url();
如果您想在 ZEND 中使用 getRequest,请进一步探索The Request Object。
跳过它下面(尸检示例如何工作)。
完整的示例代码 getRequestUri() 如何工作以及为什么使用 isRequest 而不是$_SERVER
因为在特定平台上随机获取数据:
首先,如果 uri 为空,则如果从 IIS 请求的设置为 HTTP_X_REWRITE_URL。如果没有,请检查 IIS7 重写的 uri(包括编码的 uri)。如果不在 IIS 上,则 REQUEST_URI 将检查 HTTP_HOSTNAME 的方案,或者如果失败,则用作 ORIG_PATH_INFO 并获取 QUERY_STRING。
如果设置,则通过$this
类中返回的对象字符串自动获取数据。
如果失败,将设置一个解析的字符串而不是设置它。
if ($requestUri === null) {
if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch
$requestUri = $_SERVER['HTTP_X_REWRITE_URL'];
} elseif (
// IIS7 with URL Rewrite: make sure we get the unencoded url (double slash problem)
isset($_SERVER['IIS_WasUrlRewritten'])
&& $_SERVER['IIS_WasUrlRewritten'] == '1'
&& isset($_SERVER['UNENCODED_URL'])
&& $_SERVER['UNENCODED_URL'] != ''
) {
$requestUri = $_SERVER['UNENCODED_URL'];
} elseif (isset($_SERVER['REQUEST_URI'])) {
$requestUri = $_SERVER['REQUEST_URI'];
// Http proxy reqs setup request uri with scheme and host [and port] + the url path, only use url path
$schemeAndHttpHost = $this->getScheme() . '://' . $this->getHttpHost();
if (strpos($requestUri, $schemeAndHttpHost) === 0) {
$requestUri = substr($requestUri, strlen($schemeAndHttpHost));
}
} elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI
$requestUri = $_SERVER['ORIG_PATH_INFO'];
if (!empty($_SERVER['QUERY_STRING'])) {
$requestUri .= '?' . $_SERVER['QUERY_STRING'];
}
} else {
return $this;
}
} elseif (!is_string($requestUri)) {
return $this;
} else {
// Set GET items, if available
if (false !== ($pos = strpos($requestUri, '?'))) {
// Get key => value pairs and set $_GET
$query = substr($requestUri, $pos + 1);
parse_str($query, $vars);
$this->setQuery($vars);
}
}
$this->_requestUri = $requestUri;
return $this;