我在这个地方看到的一个问题是一个大问题:“我必须在路径前面放一个/或者我不能?”PHP:是否有路径规范约定?
对不起,如果这看起来是主观的,但对我的框架来说这是一个重要的问题: 你认为在指定一个时在每条路径的前面放一个“/”更合乎逻辑,或者你认为“/”应该避免前缀?
或者我应该检查第一个字符是否为“/”,如果不是,自动添加?
上下文:采用路径的框架函数。
我在这个地方看到的一个问题是一个大问题:“我必须在路径前面放一个/或者我不能?”PHP:是否有路径规范约定?
对不起,如果这看起来是主观的,但对我的框架来说这是一个重要的问题: 你认为在指定一个时在每条路径的前面放一个“/”更合乎逻辑,或者你认为“/”应该避免前缀?
或者我应该检查第一个字符是否为“/”,如果不是,自动添加?
上下文:采用路径的框架函数。
如果将/
放在每条路径的前面,那么这些路径是绝对路径。没有它,它们是相对的。不知道你在做什么,但这就是开始时的/
。
例如,如果您当前的目录是/var/www/html/
并且您将路径指定为foo/bar/
,则路径将变为/var/www/html/foo/bar/
。
如果你给你的路径为/foo/bar/
,那么路径就是这样,没有任何前提。
所以正斜杠只是你从哪里查看文件的问题,如果你使用路径作为函数的参数,你可能想把它们作为相对的传递给框架目录)。
但是如果框架执行“root-jailing”并考虑从相同的basedir开始的所有路径,那么它并不重要,是吗? – 2009-12-31 19:00:04
我喜欢它,因为它可以更容易地添加文件,并避免混淆总是拥有它。例如:
http://example.com/ + file.php IS http://example.com/file.php = path
http://example.com + file.php IS http://example.comfile.php = error
最好的约定是您是否打算使路径相对或绝对。通常,前导'/'指定从文件系统根目录或网站根目录的绝对路径。
拿一个例子CSS文件,位于在mysite.com/files/css/info.css
...
background-image:url('/bg.png'); /* absolute - use mysite.com/bg.png */
background-image:url('bg.png'); /* relative to info.css - use mysite.com/files/css/bg.png */
...
在自己的代码,当你有ommitting的选项或包括斜线,你可以遵循类似的约定:
<?php
// $uri - the relative/absolute uri to link to, ie /posts or 'show/id'
// $text - the text link
function link_to($uri, $text) {
if ($uri[0] == '/') {
// assume absolute
$href = $uri;
} else {
// assume relative to current uri; remove last segment and replace
$uri_segments = get_uri_segments();
array_pop($uri_segments);
array_push($uri_segments, $uri);
$href = implode('/', $uri_segments);
}
return "<a href=\"$href\">$text</a>";
}
//
// elsewhere, assuming current URL is 'myself.com/users'
//
// relative link to 'create'
link_to("create", "Show User"); // mysite.com/users/create
// absolute link to '/products'
link_to("/products", "Products"); // mysite.com/products
?>
我不知道我是否理解你。你的意思是文件路径? – 2009-12-31 18:47:01