您的位置:首页 > 编程语言 > PHP开发

php $_SERVER['ORIG_SCRIPT_NAME']

2014-09-29 11:03 330 查看
因为要做某项目的一个新功能,而这个新功能又是用公司新开发的框架做的。

该框架甚是NB啊,NB到什么地方那。主要有一下几点:

1、该框架无文档;

2、该框架源码中无注释;

3、除了那帮主线开发人员我们部门很少有人熟悉使用;

如果想使用这个框架做东西,只有一条路:看源码,先了解框架的实现原理,然后再用这个鸟玩意做东西。

当我看到一个处理request的类的时候,如下代码映入眼帘:

<span style="color:#333333;"> <?php
static function get_base_url(){
$filename = (isset($_SERVER['SCRIPT_FILENAME'])) ? basename($_SERVER['SCRIPT_FILENAME']) : '';
if (isset(</span><span style="color:#ff0000;">$_SERVER['ORIG_SCRIPT_NAME']</span><span style="color:#333333;">) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $filename) {
$base_url = $_SERVER['ORIG_SCRIPT_NAME'];
} elseif (isset($_SERVER['SCRIPT_NAME']) && basename($_SERVER['SCRIPT_NAME']) === $filename) { 6             $base_url = $_SERVER['SCRIPT_NAME'];
} elseif (isset($_SERVER['PHP_SELF']) && basename($_SERVER['PHP_SELF']) === $filename) {
$base_url = $_SERVER['PHP_SELF'];
} else {
$path    = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '';
$file    = isset($_SERVER['SCRIPT_FILENAME']) ? $_SERVER['SCRIPT_FILENAME'] : '';
$segs    = explode('/', trim($file, '/'));
$segs    = array_reverse($segs);
$index   = 0;
$last    = count($segs);
$base_url = '';
do {
$seg = $segs[$index];
$base_url = '/' . $seg . $base_url;
++$index;
} while (($last > $index) && (false !== ($pos = strpos($path, $base_url))) && (0 != $pos));
}

$request_uri = self::get_request_uri();
if (0 === strpos($request_uri, $base_url)) {
return self::dirname($base_url);
}
if (0 === strpos($request_uri, dirname($base_url))) {
return self::dirname($base_url);
}

$truncatedrequest_uri = $request_uri;
if (($pos = strpos($request_uri, '?')) !== false) {
$truncatedrequest_uri = substr($request_uri, 0, $pos);
}

$basename = basename($base_url);
if (empty($basename) || !strpos($truncatedrequest_uri, $basename)) {
return;
}

if ((strlen($request_uri) >= strlen($base_url))
&& ((false !== ($pos = strpos($request_uri, $base_url))) && ($pos !== 0)))  {
$base_url = substr($request_uri, 0, $pos + strlen($base_url));
}
return  rtrim(self::dirname($base_url), '/');
}</span>


要学的东西真是太多了,今天第一次看见$_SERVER['ORIG_SCRIPT_NAME']这个变量。做什么的?还真不清楚。

以前我只是知道$_SERVER['SCRIPT_NAME'']这个变量。

我一向是追根究底,有什么不清楚的,如果不弄出来,难受啊。

用度娘搜索了下,见下面这段话:

这才恍然大悟啊。原来是这个原因啊。

看样子,想把php学好,学精还要大下一番功夫啊。

仅此为记。
转自:/article/6430510.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐