1

私のPHP機能は

function functionName()
{
include($_SERVER['DOCUMENT_ROOT']."/path/file.php");
}

File.php の内容は

$foo = 'bar';

関数の呼び出し (ファイル test.php の内容)

関数名();

呼び出し関数と変数が機能しない場合

echo $foo;  <- not works

しかし、その作品の下にコードを追加するとき(ファイルtest.phpの内容)

include($_SERVER['DOCUMENT_ROOT']."/path/file.php");
echo $foo; <- its works
4

3 に答える 3

4

関数で処理されるすべての変数は、その関数のみに限定されます。関数内で無数の変数を作成できますが、これらの変数は戻り変数を除いて関数の外では使用できません。

function thisIsMyFunction () {
  $var1 = "foo";
  $var2 = "bar";
  return $var1;
}

echo thisisMyFunction();

変数に入れるか、エコーアウトできる「foo」を提供します。たとえば構成ファイルなど、複数の変数をロードする方法を探している場合は、次のようにします。

config.php
$config["var1"] = "foo";
$config["var2"] = "bar";

index.php
include "config.php";

function myFunction(){
  global $config;
  echo $config["var1"] . " " . $config["var2"];
}

myFunction();

will result in

foo bar

要するに、関数で行われた何かは、その関数の出力が定義されていない限り、関数にとどまります。これが、関数でのインクルードが機能しない理由です。

于 2012-06-24T15:32:15.690 に答える
2

これは、が定義されている他のファイルを含めない場合、そのファイルの$foo値を構成できないためです。

しかし、include("/path/file.php");その作品を追加するとき。

もちろんそうです。さて、重要なことは、ドメイン名に基づいて含まれていますか?

例: http://www.site.com/path/to/file.phpは、現在のセットアップに from http://www.site.com/path/file.phpを含めます。インクルードの作業は次のとおりです。

  1. /file.php>> ファイルはドメインのルートにあります。ドメインのルートにある必要があります。
  2. ./file.php>>ファイルは同じディレクトリにあります。
  3. ../file.php>> ファイルは親ディレクトリにあります。
  4. ../../file.php>> ファイルは祖父母ディレクトリにあります。

(など)。

include()およびrequire()それらに関連する関数が行うことは、それらを含むファイルの一部であるかのように別のファイルをインクルードすることです。違いは次のとおりです。

失敗した場合を除いて、Include と require は同じです。

  • require は致命的なエラー (E_COMPILE_ERROR) を生成し、スクリプトはそれ自体を強制終了します。
  • include は警告 (E_WARNING) のみを生成し、スクリプトは残りのコマンドを終了します
于 2012-06-24T14:00:07.827 に答える
0
function functionName()
{
global $foo;
global $bar;

include($_SERVER['DOCUMENT_ROOT']."/path/file.php");
}
functionName();
echo $foo;
echo $bar;
于 2012-07-01T09:24:27.677 に答える