PHPの基礎 - 定数

2024年11月20日 (水) 13:07時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == <br><br> == 魔法定数 == <code>__DIR__</code>は、PHPの魔法定数 (マジカル定数) の1つであり、そのPHPファイルが配置されているディレクトリの絶対パスを返す。<br> <u>この定数は、PHP 5.3以降で使用可能である。</u><br> <br> 例えば、以下に示すようなファイル構成の場合、index.phpファイル内で<code>__DIR__</code>を指定すると/var/www/html/myappを指す。<br> /var…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
📢 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');