WordPress を含む多くの有名な PHP スクリプトは、現在実行中のスクリプトの同じディレクトリにファイルを含める場合dirname(__FILE__).'/myParent.php'に代わりに使用します。'myParent.php'
それらは同じものではありませんか?なぜタイピングが好きなのですか?
ありがとう。
PHP は、ファイルへの絶対パスを認識する必要があります。dirname(__FILE__).'/myParent.php'すでに絶対パスですが、絶対パスを取得してファイルを見つけるには、include_path'myParent.php'で指定されたパスを使用して検索する必要があります。より良い選択は次のとおりです。'./myParent.php'
include './file'ただし、明示的に使用する方が、インクルードごとに現在のディレクトリを常にチェックするように PHP に設定するよりも効率的です。
パフォーマンスの向上 (ほとんどの場合、最適化前の可能性が高い*) に加えて、環境の PHP 構成に現在のディレクトリ ( .) がインクルード パスの一部として含まれていない (非常に奇妙な) シナリオからも保護されます。
*ルックアップincludeを必要とするinclude_pathパスとそうでない相対パスを使用するベンチマーク。それぞれ100000回以上の反復テスト済み
結果
include("include.php"): 8.3664200305939s
include("./include.php"): 8.3511519432068s
(8.3664200305939 - 8.3511519432068) / 100000 = 0.000000152680874s
数百または数千のファイルを含める場合を除き、0.0000001 はせいぜい無視できます。
テストコード
define("MAX", 100000);
ob_start();
$i = MAX;
$_t = microtime(true);
do {
include("include.php");
} while ( --$i );
$_t = microtime(true) - $_t;
ob_end_clean();
echo "include(\"include.php\"): {$_t}s\n";
ob_start();
$i = MAX;
$_t = microtime(true);
do {
include("./include.php");
} while ( --$i );
$_t = microtime(true) - $_t;
ob_end_clean();
テストは、PHP バージョン 5.2.9 (www.entropy.ch リリース 7) を搭載した 2.16GHz Macbook 10.5.8 で実施されました。
PHPはinclude_pathを介してファイルを検索しないため、dirname+ファイル名を使用すると少し高速になります。速度が重要な場合は、もっと入力する可能性があります。
include('./ file.php')に関する追加のメモ。
速度だけが重要な場合は、はい、include('./ file.php')を使用できますが、依存関係と相対パスの問題を解決する場合は、dirname(__ FILE __)を使用することをお勧めします。
include('./file.php')
実行中のスクリプト(スクリプトを含む)に関連するパスを作成しますが、
include(dirname(__FILE__).'/file.php');
この行が存在する現在のスクリプト(含まれているスクリプト)に関連するパスを解決します。
一般に、dirname(__ FILE __)を使用すると、パフォーマンスの向上はごくわずかですが、dirname(__ FILE __)の方がはるかに信頼性の高いインクルードになるため、dirname(__ FILE __)を使用することをお勧めします。
/編集:上記で行われたベンチマークは、include_pathウォーキングがないためinclude('./something.php')よりも実際に高速であることにのみ関係することに注意してください。ただし、使用すると、関数呼び出しのオーバーヘッドが発生し、include_pathをウォーキングするよりも遅くなります( include_pathに多くのパスがあります)。include('something.php')dirname(__FILE__)dirname()