究竟是什么baseUrl

oke*_*_on 10 php zend-framework base-url

我花了一些时间试图理解baseUrl是什么(来自学习Zend Framework),但令人惊讶的是,对于这样一个无处不在的实用程序,没有一个"专家"或博客甚至试图定义baseUrl以便学习者知道什么它是关于.他们都假设你知道它是什么,然后继续推导它,每个人都用他自己的方法来得出他自己的结果.从我到目前为止所读到的内容:

有些人认为这是一个主页的URL,这是我自然而然地想到它是(从名字暗示),由被访问$_SERVER["HTTP_HOST"]$_SERVER["SERVER_NAME"]但令人惊讶的这些似乎是少数.

有人认为它是一个当前页面,可以通过server-name 访问$_SERVER["REQUEST_URI"]$_SERVER["PHP_SELF"]附加到server-name

而其他人认为它可以是任何上述或任何网址(好吧,至少这是我得到的印象),取决于用户想要如何使用它.

那么有人可以准确地解释一下baseUrl是什么,而不是假设我也是"专家"以及为什么我可能需要它.谢谢.

编辑: baseUrl应该在大多数Zend项目中自动设置,但显然不是我的情况.即使我做了echo $this->baseUrl()或者var_dump($this->baseUrl()),我什么都没得到.所以我真的不知道这个实用程序是什么.

Dav*_*aub 19

您需要拥有baseUrl()设施的简短答案是:

部署应用程序的位置应该是配置问题,而不是核心应用程序功能问题

在许多情况下 - 甚至是大多数情况下,应用程序的基本网址只是$_SERVER['HTTP_HOST']或者$_SERVER['SERVER_NAME'].

但情况并非总是如此.

最简单的例子是标准网站,它有通常的页面:

  • http://example.com/
  • http://example.com/contact
  • http://example.com/about
  • // etc

现在您编写(或购买或下载为OSS包)您希望在URL下部署的博客应用程序:

http://example.com/blog

博客可以有以下链接:

  • http://example.com/blog/post/my-post-slug
  • http://example.com/blog/categories/some-category
  • //etc

所有这些链接都在/blog.

该博客应用本身应该关注的只是与博客内链接/页/路由.虽然您的博客模板可能很好地将页眉/页脚链接包含回网站的其余部分,但核心博客应用程序功能的其余部分不应该知道您网站的其余部分.不知何故,博客应用程序需要知道,当他生成博客帖子和博客类别以及所有其他博客相关页面的链接时,它们都必须加上前缀http://example.com/blog.

$_SERVER['HTTP_HOST']$_SERVER['SERVER_NAME']不反映此环境/部署信息.使用base-url值配置(!)应用程序并baseUrl()在生成链接时始终使用某种功能(使用此配置)是保持核心应用程序功能专注于其自身业务而非外部部署因素的好方法.