簡體   English   中英

如何在ZF 1.12中獲取http主機

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM