1. ホーム
  2. php

[解決済み] phpのインクルードファイルから別のファイルに変数を渡す: グローバルとそうでないもの

2023-08-13 05:13:13

質問

あるインクルードファイルから別のインクルードファイルに変数を渡そうとしています。これは、2 番目のインクルードファイルで変数をグローバルとして宣言しない限り、動作しません。しかし、私は最初のインクルードを呼び出しているファイル内でグローバルとしてそれを宣言する必要はありません。例えば


front.inc:

$name = 'james';


index.phpです。

include('front.inc');
echo $name;
include('end.inc');

出力:ジェームス


end.inc:

echo $name;

出力:なし


end.incで$nameをechoする前にglobal $nameを宣言すると、正しく動作するようになります。この投稿に対する回答では、これはサーバーの設定に依存すると説明されています。 PHPでファイルから別のファイルへ変数を渡す

私はApacheサーバーを使っています。どのように設定すれば、$nameをグローバルに宣言することが不要になるのでしょうか?一方と他方で利点/欠点はありますか?

どのように解決するのですか?

親ファイルが両方のインクルードファイルの変数にアクセスすることができる

PHP でファイルをインクルードする場合、そのコードはインクルードされるファイルの中に存在するように動作します。インクルードされた各ファイルのコードを直接 index.php . これが、PHP のインクルード処理の仕組みです。

という変数を設定したので、この例では $name という変数を front.inc ファイルを作成し、両方の front.incend.inc の中に index.php を使用すると echo という変数があります。 $name の後の任意の場所で includefront.inc あなたの中の index.php . ここでも、PHP はあなたの index.php を、あたかもインクルードしている2つのファイルのコードが の部分であるかのように処理されます。 であるかのようです。

インクルードされたファイルは、他のインクルードされたファイルにアクセスすることができません

インクルードされたファイルに echo を置いた場合、他のインクルードされたファイルとは別に扱われるため、結果を得ることはできません。

つまり、期待する動作を行うには、グローバルとして定義する必要があります。