2009-12-31 4 views
1

내가보기에 모든 문제 중 하나가 큰 문제입니다. "나는 길 앞이나 앞에 놓아야합니까? 아니면하지 않아야합니까?"PHP : 경로 지정 규칙이 있습니까?

죄송합니다 주관적이지만 프레임 워크의 경우 중요한 질문인데 하나를 지정하면 모든 경로 앞에 "/"를 넣는 것이 더 논리적이라고 생각합니까? 아니면 "/" 접두사를 피해야합니까?

첫 번째 문자가 "/"인지 확인하고 그렇지 않은 경우 자동으로 추가해야합니까?

컨텍스트 : 경로를 사용하는 프레임 워크 함수.

+0

나는 당신을 이해하는지 잘 모르겠습니다. 파일 경로를 의미합니까? –

답변

4

모든 경로 앞에 /을 입력하면 해당 경로는 절대 경로입니다. 그것 없이는 친척입니다. 당신이 뭘하고 있는지 잘 모르겠지만 그게 처음에 /입니다.

예를 들어 현재 디렉토리가 /var/www/html/이고 경로를 foo/bar/으로 지정하면 경로는 /var/www/html/foo/bar/이됩니다.

경로를 /foo/bar/으로 지정하면 경로는 앞에 아무 것도 붙이지 않고 그대로 나타납니다.

슬래시는 파일을 찾는 위치에서 문제가되며, 경로를 함수의 인수로 사용하는 경우에는 상대 경로로 전달해야 할 수도 있습니다 (프레임 워크 디렉토리).

+0

그러나 프레임 워크가 "root-jailing"을 수행하고 동일한 경로에서 시작하는 모든 경로를 고려하면 실제로 중요하지 않습니다. –

0

나는 파일을 쉽게 추가 할 수 있고 항상 혼란을 피하기 때문에 그것을 갖고 싶어합니다. 예 :

http://example.com/ + file.php IS http://example.com/file.php = path 
http://example.com + file.php IS http://example.comfile.php = error 
1

가장 좋은 방법은 상대 경로 또는 절대 경로를 사용할지 여부입니다. 일반적으로 '/'는 파일 시스템의 루트 또는 웹 사이트의 루트에서 절대 경로를 지정합니다. 당신이 선도적 인 슬래시를 포함한 ommitting의 옵션 또는이있을 때

는 자신의 코드에서 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 */ 
... 

에서 당신을에있는 예제 CSS 파일을 가지고 유사한 규칙을 따를 수 있습니다.

<?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 

?>