我在整个地方看到的一个问题是一个大问题:“我必须把/放在路径前面,还是我不能?”
很抱歉,如果这似乎是主观的,但对于我的框架,这是一个重要的问题: 你是否认为在指定一个路径时在每个路径前加上“/”更合乎逻辑,或者你认为应该避免使用“/”前缀?
或者我应该检查第一个字符是否为“/”,如果不是,请自动添加?
上下文:采用路径的框架函数。
答案 0 :(得分:4)
如果在每条路径前放置一个/
,那么这些路径是绝对的。没有它,它们是相对的。不知道你在追求什么,但这就是开始时的/
。
例如,如果您当前的目录是/var/www/html/
,并且您将路径指定为foo/bar/
,则路径将变为/var/www/html/foo/bar/
。
如果您将路径设为/foo/bar/
,那么路径就是这样,没有任何前缀。
所以正斜杠只是你从哪里查看文件的问题,如果你使用路径作为函数的参数,你可能希望将它们作为相对传递(到框架目录)
答案 1 :(得分:1)
最好的约定是你是否想要相对或绝对的道路。通常,前导'/'指定从文件系统的根目录或网站的根目录的绝对路径。
获取一个示例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 */
...
在您自己的代码中,当您可以选择省略或包含前导斜杠时,您可以遵循类似的约定:
<?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
?>
答案 2 :(得分:0)
我喜欢它,因为它可以更容易地添加文件,并避免混淆总是拥有它。例如:
http://example.com/ + file.php IS http://example.com/file.php = path
http://example.com + file.php IS http://example.comfile.php = error