PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPの__DIR__の使い方を徹底解説!現在のディレクトリパスを正しく取得する方法

__DIR__とは?

__DIR__は、現在実行中のコードファイルが存在するディレクトリの絶対パスを取得するためのPHPのマジック定数です。PHP 5.3以降で利用可能となり、従来のdirname(__FILE__)と同等の結果を返します。

特に、インクルードされたファイルの中からさらに別のファイルを読み込みたい場合に威力を発揮します。

ディレクトリ構成の例

以下のようなディレクトリ構成を想定してみましょう。「master」というディレクトリには「worker_1.php」と「worker_2.php」の2つのファイルが格納されており、masterディレクトリ自体はプロジェクトのメインディレクトリのサブフォルダです。プロジェクトディレクトリにはindex.phpも配置されています。

project_directory
├── master
│   ├── worker_1.php
│   └── worker_2.php
└── index.php

相対パスでincludeする際の問題点

index.phpから以下のコードを実行すると、正常に動作します。

include "master/worker_1.php";

しかし、worker_1.phpからworker_2.phpを読み込みたい場合、PHPのincludeは実行時の基準パスに依存するため、単に「worker_2.php」と指定しても読み込めません。この場合、index.phpを起点とした相対パスで指定する必要があります。

include "master/worker_2.php";

このように、呼び出し元のファイル位置によってパスの書き方が変わってしまうのは、コードの保守性や可搬性の面で大きな問題となります。

__DIR__を使った解決方法

そこで活躍するのが__DIR__です。worker_1.phpに以下のコードを記述すれば、worker_1.php自身が存在するディレクトリを基準としてworker_2.phpを読み込めるようになります。

<?php
include __DIR__ . "/worker_2.php";

__DIR__は常に「そのコードが書かれているファイル自身のディレクトリ」を指すため、どのファイルから呼び出されてもパスがずれることはありません。これにより、環境に左右されない安定したファイル読み込みが実現できます。

まとめ

  • __DIR__はPHP 5.3以降で使えるマジック定数で、そのファイルが存在するディレクトリの絶対パスを返す
  • dirname(__FILE__)と同等の機能を持つ
  • 相対パスによるincludeの失敗を防ぎ、どこから呼び出しても安定して動作するコードを書ける
  1. Linuxでmkdirコマンドを使ってディレクトリを作成する方法|権限設定や便利なオプションも解説

    ポイントLinuxでターミナルウィンドウを開きます。新しいディレクトリを作成したいフォルダへ移動します。mkdir ディレクトリ名という形式でコマンドを入力します。この記事では、Linuxでmkdirコマンドを使ってディレクトリを作成する方法を解説します。あわせて、mkdirで使える各種オプション(スイッチ)や、コマンドを正しく実行するための構文についても取り上げます。新しいディレクトリを作成する方法Linuxでは、コマンドラインからmkdirコマンドを実行するだけで、新しいディレクトリ(フォルダ)を作成できます。たとえば「test」という名前のディレクトリを作成したい場合は、ターミナルを開き

  2. Linuxのディレクトリ構造を理解して使いこなす方法

    Linuxのディレクトリ構造はWindowsとは大きく異なるため、初めてLinuxに触れる方は戸惑うことが少なくありません。そんなときは、Linuxのディレクトリ構造を「木(ツリー)」としてイメージすると理解しやすくなります。木が根っこから成長して枝を広げるように、Linuxではルート(/)を起点として各ディレクトリが枝分かれしていきます。 ディレクトリの区切り文字はフォワードスラッシュ(/)で、略して「スラッシュ」と呼ばれます。たとえば、ルートディレクトリへのパスは単に「スラッシュ(/)」と表現されるのが一般的です。 Linuxディレクトリ構造とは Linuxに慣れている方なら、「