[英]How to get http host in ZF 1.12
如何獲得主機地址? 例如,我的網站位於: http : //example.org/index/news/,而我只想提取http://example.org/ 。
我問一下ZF功能。 我知道$ _SERVER ['HTTP_HOST'],但是我正在尋找本地的東西。
從控制器:
$this->getRequest()->getServer('HTTP_HOST')
這將為您提供example.org
,其余的必須在其周圍添加。
接受的答案是完全可以的,但是您可能需要記住一些注意事項。
$this->getRequest();
是函數/方法調用,這意味着不必要的開銷,因為控制器具有受保護的$_request
屬性,因此
$this->_request
getRequest
方法只不過公開$_request
屬性(這是一個公共方法):
public function getRequest()
{
return $this->_request;
}
應該表現得更好。 另外,如果您查找getServer
方法的源代碼:
public function getServer($key = null, $default = null)
{
if (null === $key) {
return $_SERVER;
}
return (isset($_SERVER[$key])) ? $_SERVER[$key] : $default;
}
除了語法糖外,使用該方法沒有提供默認值真的沒有意義。
最快的方法永遠是
$_SERVER['HTTP_HOST'];
但是,結合兩全其美,最安全(也是最類似於ZF的方式)將是:
$this->_request->getServer('HTTP_HOST', 'localhost');//default to localhost, or whatever you prefer.
您要查找的完整代碼可能是:
$base = 'http';
if ($this->_request->getServer('HTTPS', 'off') !== 'off')
{
$base .= 's';
}
$base .= '://'.$this->_request->getServer('SERVER_NAME', 'localhost').'/';
根據您的情況,應顯示為http://expample.org/
。
請參閱此處以獲取您可以獲得的SERVER參數的完整列表,它們的含義以及值可能是什么...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.