[解決済み] phpのインクルードファイルから別のファイルに変数を渡す: グローバルとそうでないもの
質問
あるインクルードファイルから別のインクルードファイルに変数を渡そうとしています。これは、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.inc
と
end.inc
の中に
index.php
を使用すると
echo
という変数があります。
$name
の後の任意の場所で
include
の
front.inc
あなたの中の
index.php
. ここでも、PHP はあなたの
index.php
を、あたかもインクルードしている2つのファイルのコードが
の部分であるかのように処理されます。
であるかのようです。
インクルードされたファイルは、他のインクルードされたファイルにアクセスすることができません
インクルードされたファイルに
echo
を置いた場合、他のインクルードされたファイルとは別に扱われるため、結果を得ることはできません。
つまり、期待する動作を行うには、グローバルとして定義する必要があります。
関連
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み】foreach()に与えられた引数が無効です。)
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない
-
[解決済み] PHP 未定義関数への呼び出し
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] HTML ファイルに別の HTML ファイルをインクルードする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHPで空の値からデフォルトオブジェクトを作成する?
-
[解決済み】空の配列要素を削除する
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み】子テーマのCSSが親テーマをオーバーライドしない
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。