Zend framework Zend框架:获取公共路径,获取应用程序url

Zend framework Zend框架:获取公共路径,获取应用程序url,zend-framework,url,public,Zend Framework,Url,Public,是否有一些适当的Zend方法用于: a) 接收到/public目录的路径 b) 接收应用程序url 实际上,我使用的是控制器中定义的方法,但如果它们存在,则使用ready方法是正确的 protected function _getApplicationUrl() { return $_SERVER['SERVER_NAME']; } protected function _getPublicPath() { return realpath(APPLICATION_PATH .

是否有一些适当的Zend方法用于:

a) 接收到/public目录的路径

b) 接收应用程序url

实际上,我使用的是控制器中定义的方法,但如果它们存在,则使用ready方法是正确的

protected function _getApplicationUrl() {
    return $_SERVER['SERVER_NAME'];
}

protected function _getPublicPath() {
    return realpath(APPLICATION_PATH . '/../public/');
}

关于应用程序URL,
Zend\u Controller\u Request\u Http
有一个
getRequestUri()
方法,但它故意(有些令人沮丧地)排除了URL的方案和主机名部分。在我的应用程序中,我求助于在引导程序中获取
$\u SERVER['HTTP\u HOST']
,并将其存储在注册表中,以便以后构建完整URL时使用

从内存来看,不,没有任何内置方法可以获取
public
文件夹的位置,但是您拥有的代码很好。我见过的大多数应用程序
define()
都是
index.php
中的所有路径,我认为这稍微安全一点(只是因为路径名设置得更快,变得绝对不可变),而且速度稍微快一点,但让我们不要讨论微优化问题吧:-)

1)如果您的虚拟主机指向ZF/public,那么在视图中,您可以通过helper方法
$this->baseUrl()获取路径在控制器中
$this->view->baseUrl()否则创建自己的助手并使用它。
2) 在控制器
$this->getRequest()->getHttpHost()中

a) 接收到/public目录的路径


内置php函数将为您提供站点主机文件夹的路径(例如输出“/home/my\u cp/public\u html/my\u site.loc/www”)。然后,你可以构建任何你想要的路径

使用
getHTTPPost()
时要包含的类是什么?在控制器中:调用未定义的方法Zend\Http\PhpEnvironment\Request::getHttpHost()
protected function _getPublicPath() {
    chdir(APPLICATION_PATH);
    return realpath("../public");
}