📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
概要
魔法定数
__DIR__は、PHPの魔法定数 (マジカル定数) の1つであり、そのPHPファイルが配置されているディレクトリの絶対パスを返す。
この定数は、PHP 5.3以降で使用可能である。
例えば、以下に示すようなファイル構成の場合、index.phpファイル内で__DIR__を指定すると/var/www/html/myappを指す。
/var/www/html/myapp/
├── index.php
└── classes/
└── class.php
__DIR__のメリットを以下に示す。
- パスの信頼性
// 相対パスの場合 (非推奨) require_once('class.php'); // 実行時の作業ディレクトリに依存 // __DIR__を使用 (推奨) require_once(__DIR__ . '/class.php'); // 常に確実なパス
- 異なるディレクトリからの実行でも動作
// classes/class.phpを読み込む場合 require_once(__DIR__ . '/classes/class.php');
- セキュリティの向上
- 相対パスを使用する場合と比べて、意図しないファイルが読み込まれるリスクを減らす。
- IDEのサポート
- 絶対パスを使用することいより、IDEの補完機能やパス解決が正確に機能する。
// 一般的な使用例
// 設定ファイルの読み込み
require_once(__DIR__ . '/config/config.php');
// クラスファイルの読み込み
require_once(__DIR__ . '/classes/User.php');
// テンプレートの読み込み
include(__DIR__ . '/templates/header.php');
※注意
- WindowsでもLinuxでも適切に動作する。(パスの区切り文字を自動的に処理)
- ファイルパスを組み立てる場合は、ディレクトリの区切り文字 ("/") の重複に注意する。
// 応用例
// 共通の定数として定義
define('BASE_PATH', __DIR__);
define('CLASS_PATH', BASE_PATH . '/classes');
define('CONFIG_PATH', BASE_PATH . '/config');
// 後で使用
require_once(CLASS_PATH . '/User.php');
require_once(CONFIG_PATH . '/database.php');