我刚刚浏览了PhileCMS的源代码并遇到了以下脚本:
在此处查看此代码:
if (isset($this->server['PHP_SELF'])) {
$url = preg_replace('/index\.php(.*)?$/', '', $this->server['PHP_SELF']);
}
现在$this->server
实际上是$_SERVER
;
我想知道,如果条件真正检查,上面是什么?
可以看到整个脚本 HERE
答案 0 :(得分:2)
根据PHP docs,$_SERVER['PHP_SELF']
包含:
当前正在执行的脚本的文件名,相对于文档根目录。
现在我不确定为什么此代码存在或为什么要检查isset
(我很确定永远不会出现这样的情况: $_SERVER['PHP_SELF']
未设置),但它正在做的是获取网址并删除 index.php
及其后的所有内容。
例如,如果您导航到:http://example.com/foo/bar/index.php/info?test=123
,则$_SERVER['PHP_SELF']
将为/foo/bar/index.php/info
(不包括查询字符串)。因此,显示的preg_replace
语句会移除/index.php/info
,从而离开/foo/bar
。
更新:您是否注意到此代码所属函数的名称? public function getBaseUrl()
。它获取index.php的路径(或"基本URL")。它正在确定安装到何处的路径。