web-dev-qa-db-ja.com

require_onceに__DIR__を含める理由

たとえば、次のような名前のオートローダーが常に表示されます。

require_once __DIR__ . '/../vendor/autoload.php';

それとより簡潔なものの違いは何ですか

require_once '../vendor/autoload.php';

18
Dan Goodspeed

PHPスクリプトは、独自のファイルのパスではなく、現在のパス(getcwd()の結果)を基準にして実行されます。 ___DIR___を使用すると、インクルードが独自のパスに対して強制的に実行されます。

デモンストレーションするには、次のファイル(およびディレクトリ)を作成します。

_- file1.php
- dir/
   - file2.php
   - file3.php
_

_file2.php_に次のような_file3.php_が含まれる場合:

_include `file3.php`.
_

_file2.php_を直接呼び出すと、正常に機能します。ただし、_file1.php_ includes _file2.php_の場合、現在のディレクトリ(getcwd())は_file2.php_に対して間違っているため、_file3.php_は含めることができません。

25
Evert

PHP自動検索。間違ったファイルをロードする。

https://secure.php.net/manual/en/function.set-include-path.php

そうすれば、正しいファイルを確実にロードできます。

0
René Höhle