PHP에서 __DIR__과 dirname (__ FILE__) 사이에 차이점이 있습니까?


122

저도 똑같아 보이지만 잘 모르겠습니다.

을 사용하는 많은 프로젝트가 있기 때문 dirname(__FILE__)입니다.

답변:


189

결과는 정확히 동일합니다 . 그래서 차이가 없습니다.


예를 들어 다음 두 줄은 다음과 같습니다.

var_dump(dirname(__FILE__));
var_dump(__DIR__);

둘 다 동일한 출력을 제공합니다.

string '/home/squale/developpement/tests/temp' (length=37)


그러나 최소한 두 가지 차이점이 있습니다.

  • __DIR__PHP> = 5.3 에서만 존재합니다.
    • 이것이 dirname(__FILE__)더 널리 사용되는 이유 입니다
  • __DIR__컴파일 타임에 평가되는 반면 dirname(__FILE__), 함수 호출 을 의미하며 실행 타임에 평가됩니다.
    • 그래서, __DIR__(또는이어야한다) 빨리.


참고로 매뉴얼 (인용)매직 상수 섹션을 참조하십시오 .

__DIR__: 파일의 디렉토리입니다.
포함 내에서 사용하면 포함 된 파일의 디렉터리가 반환됩니다.
이것은 dirname(__FILE__).
이 디렉토리 이름은 루트 디렉토리가 아닌 한 후행 슬래시가 없습니다.
(PHP 5.3.0에 추가되었습니다.)


3
확실하지는 않지만 꽤 오랫동안 거기에있었습니다 (매뉴얼의 Magic 상수 페이지에 bahavior가 PHP 4.0.2에서 수정되었다고 나와 있으므로 이전에 거기에 있었다고 말하겠습니다)
Pascal MARTIN

3
DIR 및 dirname ( FILE )은 항상 마지막 슬래시를 제거합니다. 맞습니까?
nkkollaw

3
전체 경로가 "/"인 경우를 제외하고는 맞습니다.이 경우 제거하지 않습니다.
Francisco Presencia 2014 년

1
내가 올바르게 이해했는지 확실하지 않습니다. dirname ( _FILE_ ) 이 가장 빠른 것입니다.
Giacomo Tecya Pigani

7
@GiacomoTecyaPigani 아니, __DIR__더 빠릅니다.
니코
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.