快速回答是,在我的 ZF1 应用程序服务于虚拟 Web 主机根目录的站点上,我还得到一个空字符串:
Zend_Controller_Front::getInstance()->getBaseUrl()
正如@TimFountain 指出的那样,它本身不会返回真正的URL,并带有http
或https
协议前缀。因此,它可以更多地解释为文件路径而不是 URL。但它更多的是相对文件路径:相对于 docroot 的路径。
而且,当然,如果您将baseUrl
- 可能设置为带有协议前缀的真实 URL - 那么所有解释都将关闭:它只会返回您设置的任何内容。
还值得注意的是关于在baseUrl()
中实现的 view-helper的两件事Zend_View_Helper_BaseUrl
:
它使用上面的前置控制器getBaseUrl()
方法。
这需要争论!
对于(2),根据我的经验,许多人使用baseUrl()
视图助手如下(例如在视图脚本中):
<?php echo $this->baseUrl() . '/assets/css/styles.css'; ?>
但我发现写起来更简洁:
<?php echo $this->baseUrl('/assets/css/styles.css'); ?>
对我来说,这不仅仅是几个额外字符的问题。更多的是应用程序的核心应该知道他自己的内部结构,而不是他的部署细节。以这种方式使用baseUrl()
view-helper 隐含地承认需要一些部署感知映射来解析内部部署独立资产引用到其部署后对应项。