0

わかりましたので、私はこれをここに投稿するのに十分長い間検索しました. 案の定、それは無数の時間前に尋ねられました...

私が持っているのは、別のファイルを含む 1 つのファイルです。ここには魔法はありません。問題は、インクルードされたファイルが別のファイルをインクルードし、そのファイルが...さらに別のファイルをインクルードすることです...うん、面倒です。実際には、インクルードされたファイルの最後にある元のファイルの URL を読みたかったことを除いて、すべてうまく機能しています。

だから私は元のファイル file_1.php で考えました

$var_foo = dirname(__FILE__);

また

$var_foo = $_SERVER['SCRIPT_NAME'];

次に、最初のインクルード file_2.php でその値を読み取り、次のように渡します。

$var_foo_2 = $var_foo;

次にfile_3.phpで

$var_foo_3 = $var_foo_2

最終的なファイル file_4.php にたどり着くまで、元のファイルの URL の正確な値を知りたいと思います。最初のレベルでそれを渡すことは問題なく機能しますが、途中でどこかで失われます。file_1 で GLOBAL にしようとしましたが、役に立ちませんでした。

file_3 と file_4 の両方を実行してデータを生成する必要があるため、ブレークポイントを echo / exit に設定して現在の値 (存在する場合) をスプーフィングすることはできません。私はその特定の価値がなくても生きることができますが、それを楽しみたいだけです...これを達成する方法はありますか?

4

2 に答える 2

0

前述のように、問題は次のように解決されました。

最初のインクルードの前に変数を設定し、クエリ文字列に変数を追加します

ご意見ありがとうございます。

于 2013-07-28T03:34:56.963 に答える
0

あなたの例では、「URL」ではなくファイルシステムパスを使用しています。
親ファイルのファイルパスが実際に必要なものであると想定しています。

含まれている各ページで変数を「渡す」必要はありません。新しいページのコードで自動的に使用できるようになります。

(そうでない場合は、適切なスコープにいない可能性があります。たとえば、クラスまたは関数の内部にいる場合は、意図的に渡すか、他の方法を使用する必要があります。globalおそらく、ファイル名を次のように定義することもできます)。変数ではなく定数です。)

メインスクリプト

$parent_filename = __FILE__;

// alternatively
// define( 'PARENT_FILENAME',__FILE__ );

include "other-file.php";

その他のファイル.php

include "other-dir/somefile.php";

その他のディレクトリ/somefile.php

print $parent_filename;

// alternatively
// print PARENT_FILENAME;

/* prints something like:

/path/to/main.php

*/
于 2013-07-26T05:52:51.530 に答える