0

私はphpに非常に慣れていません.netを書くのに慣れていて、インクルードを理解するのが難しいと感じています.

以下を例に取ります

<?php
include 'test.php';

function test($a)
{
 echo $value_from_test_php;
}
?>

上記のコードは機能していないようです...ただし、以下のコードは機能します

<?php

function test($a)
{
 include 'test.php'

echo $value_from_test_php;
}
?>

各関数内にインクルードを含めるのではなく、ファイル内のすべての関数に対してインクルードを機能させる方法を理解するのに苦労しています。アドバイスをいただければ幸いです。

4

4 に答える 4

1

インクルードではなく、変数のスコープが問題です。PHP では、通常、フッター、ヘッダーなど、各ページに含まれる共通のページ/マークアップがある場合にインクルードが使用されます。

4種類あります

  • include
  • include_once
  • require
  • require_once

唯一の違いはinclude、何か問題が発生した場合にエラーをスローし、スクリプトの実行を続行しrequire、それ以上の実行を停止することです。

インクルードですべてを取得できます - PHP ドキュメント

于 2013-03-22T05:11:04.820 に答える
0

それはすべて、あなたがしているファイルの内容に依存しますinclude! include関数 (またはループ、または括弧付きのほとんどすべて) 内で使用することは決してお勧めしません。includeインクルードされるファイルの内容は、文字通り、ステートメントがある場所に「配置」されていることに注意してください。したがって、あなたがいるときのスコープ(グローバル、クラス、関数など)includeは、その内容が宣言されるスコープです。

include完全なクラスと関数の定義をファイルに入れ、それらを使用するファイルの先頭に置きます。

于 2013-03-22T05:09:18.697 に答える
0

グローバルスコープの変数を使用しているため、最初の例は機能しません。使用する場合は、に置き換え$value_from_test_phpます$GLOBALS['my_var_name']

于 2013-03-22T05:10:48.820 に答える
0

あなたの問題は includes ではなくvariable scopeに関連しています。デフォルトでは、関数外で定義された変数は関数内では使用できません。

何をしようとしているのかを正確に知らずに最善の解決策を提案することは困難ですが、ドキュメント (上記のリンク) を参考にしてください。

于 2013-03-22T05:10:56.740 に答える