我花了一些时间试图理解 baseUrl 是什么(通过学习 Zend Framework),但令人惊讶的是,对于这样一个无处不在的实用程序,甚至没有一个“专家”或博主试图定义 baseUrl 以便学习者知道它是关于什么的。他们都假设你知道它是什么,然后继续推导它,每个人都用自己的方法得出自己的结果。从我到目前为止读到的内容来看:
有些人认为它是一个主页-Url,这是我自然认为的(从名称中暗示),由 $_SERVER["HTTP_HOST"]
访问或 $_SERVER["SERVER_NAME"]
但令人惊讶的是,这些似乎只占少数。
有些人认为它是被$_SERVER["REQUEST_URI"]
访问的当前页面或 $_SERVER["PHP_SELF"]
附加到服务器名称
而其他人则认为它可以是上述任何一种或与此相关的任何 url(好吧,至少这是我的印象),具体取决于用户希望如何使用它。
所以有人可以准确解释 baseUrl 是什么,而不假设我也是“专家”以及为什么我可能需要它。谢谢。
编辑: baseUrl 应该在大多数 Zend 项目上自动设置,但显然不是我的情况。即使我做 echo $this->baseUrl()
或 var_dump($this->baseUrl())
,我什么也得不到。所以我真的不知道这个实用程序是关于什么的。
最佳答案
关于为什么需要 baseUrl()
工具的简短回答是:
应用的部署位置应该是配置问题,而不是核心应用功能问题
在许多 - 甚至大多数 - 情况下,应用程序的基本 url 将只是 $_SERVER['HTTP_HOST']
或 $_SERVER['SERVER_NAME']
。
但情况并非总是如此。
要考虑的最简单示例是具有常用页面的标准网站:
http://example.com/
http://example.com/contact
http://example.com/about
//等
现在您编写(或购买或下载为 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']
不反射(reflect)此环境/部署信息。使用 base-url 值配置 (!) 应用程序并在生成链接时始终使用某种 baseUrl()
函数(使用此配置)是保持核心应用程序功能集中的好方法它自己的业务,而不是外部部署因素。
关于php - 到底什么是 baseUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14996129/