PHP의 __DIR__란 무엇인가?
PHP의 __DIR__는 현재 실행 중인 코드가 위치한 디렉터리 경로를 반환하는 매직 상수(magic constant)입니다. PHP 5.3 버전부터 도입되었으며, 기존에 널리 사용되던 dirname(__FILE__)과 동일한 결과를 제공합니다. 특히 포함(include)된 파일 내부에서 다른 파일을 불러올 때 매우 유용하게 활용됩니다.
예시 디렉터리 구조
다음과 같은 프로젝트 구조를 가정해 보겠습니다. 메인 프로젝트 디렉터리에는 index.php 파일이 있고, 그 하위 폴더인 'master' 디렉터리 안에는 worker_1.php와 worker_2.php 두 개의 파일이 존재합니다.
project_directory
├── master
│ ├── worker_1.php
│ └── worker_2.php
└── index.php
상대 경로 포함 시 발생하는 문제
index.php에서 아래 코드를 실행하면 정상적으로 동작합니다.
include "master/worker_1.php";
그러나 worker_1.php 안에서 worker_2.php를 포함하려면 문제가 발생합니다. include 경로는 index.php 파일을 기준으로 하는 상대 경로로 작성해야 하기 때문입니다.
include "master/worker_2.php";
이처럼 상대 경로 방식은 파일 위치가 변경되거나 프로젝트 구조가 복잡해질 경우 오류를 일으키기 쉽습니다.
__DIR__로 문제 해결하기
__DIR__를 사용하면 현재 파일이 실제로 있는 절대 경로를 기준으로 다른 파일을 포함시킬 수 있어 이러한 문제를 깔끔하게 해결할 수 있습니다. worker_1.php에서 아래와 같이 코드를 작성하면 됩니다.
<?php
include __DIR__ . "/worker_2.php";
__DIR__는 해당 파일이 존재하는 디렉터리를 항상 정확히 가리키므로, 스크립트가 어디에서 호출되었는지와 관계없이 안정적으로 동작한다는 장점이 있습니다. 유지보수성과 코드 이식성을 높이고 싶다면 상대 경로 대신 __DIR__를 사용하는 것이 좋습니다.