include()
include() ステートメントは、指定されたファイルをインクルードして実行します。
次のドキュメントは require() にも適用されます。 2 つの構造は、障害の処理方法を除いて同一です。 include() は警告を生成し、require() は致命的なエラーを引き起こします。つまり、ファイルが見つからない場合にページの処理を停止したい場合は、require() を使用します。 include() の場合はそうではなく、スクリプトは引き続き実行されます。また、適切な include_path が設定されていることを確認してください。
ファイルがインクルードされると、そのファイルに含まれるコードはインクルード行の変数スコープを継承します。その時点から、呼び出し側ファイルのその行で使用可能な変数は、呼び出されたファイルでも使用できるようになります。
例 12-3. 基本的な include() の例
vars.php
$color = '緑';
$fruit = 'リンゴ';
?>
test.php
echo "A $color $fruit" // A
;
「vars.php」をインクルードします;
echo "A $color $fruit" // 緑のリンゴ
;
?>
呼び出し元ファイルの関数に include が含まれている場合、呼び出されたファイルに含まれるすべてのコードは、関数内で定義されているかのように動作します。したがって、その関数の変数スコープに従います。
例 12-4. 関数にインクルードします
関数 foo()
{
グローバル $color;
「vars.php」をインクルードします;
echo "$color $fruit";
}
/* vars.php は foo() のスコープ内にあるので *
* $fruit はこれ以外では利用できません *
* スコープ。 $color は宣言したためです *
* グローバルとして */
foo(); // 青リンゴ
echo "A $color $fruit" // 緑
;
?>
ファイルがインクルードされると、パーサーは PHP モードを終了し、ターゲット ファイルの先頭で HTML モードに入り、ファイルの末尾で再開します。このため、PHP コードとして実行されるオブジェクト ファイル内のコードはすべて、有効な PHP 開始タグと終了タグに含まれている必要があります。
PHP で「URL fopen ラッパー」が有効になっている場合 (デフォルト設定)、ローカル ファイルの代わりに URL (HTTP 経由) を使用して、含めるファイルを指定できます。ターゲット サーバーがターゲット ファイルを PHP コードとして解釈する場合は、HTTP GET の URL リクエスト文字列を使用して、インクルードされたファイルに変数を渡すことができます。厳密に言うと、これはファイルをインクルードして親ファイルの変数スペースを継承することと同じではありません。スクリプト ファイルは実際にはリモート サーバー上で実行され、ローカル スクリプトにはその結果がインクルードされます。
警告
現在、Windows バージョンの PHP は、allow_url_fopen オプションが有効になっている場合でも、この関数によるリモート ファイル アクセスをサポートしていません。
例 12-5. HTTP 経由の include()
/* この例では、www.example.com が .php を解析するように設定されていることを前提としています *
また、ここでの「動作」とは、変数 *
を意味します。* $foo と $bar は、インクルードされたファイル */
内で使用できます。
// 動作しません。file.txt は www.example.com によって PHP として処理されませんでした
'http://www.example.com/file.txt?foo=1&bar=2' を含めます;
// 動作しません。
で 'file.php?foo=1&bar=2' という名前のファイルを探します。// ローカル ファイルシステム
include 'file.php?foo=1&bar=2';
// 動作します
'http://www.example.com/file.php?foo=1&bar=2' を含めます;
$foo = 1;
$bar = 2;
include 'file.txt' // 動作します
;include 'file.php' // Works.
;
?>
関連情報については、リモート ファイルの使用、fopen() および file() を参照してください。
include() と require() は特殊な言語構造であるため、条件付きステートメントで使用する場合はステートメント グループ (中括弧内) に配置する必要があります。
例 12-6. include() と条件文グループ
// これは間違っており、期待どおりに動作しません。
if ($condition)
$file をインクルードします;
それ以外
$other を含める;
// これは正しいです
if ($condition) {
$file をインクルードします;
} その他 {
$other を含める;
}
?>
戻り値の処理: インクルードされたファイル内で return() ステートメントを使用すると、ファイル内のプログラムの実行を終了し、それを呼び出したスクリプトに戻ることができます。インクルードされたファイルから値を返すことも可能です。 include呼び出しの戻り値は通常の関数と同様に取得できます。
注: PHP 3 では、関数内で呼び出さない限り、return をインクルードされたファイルに含めることはできません。この場合、return() はファイル全体ではなく関数に作用します。
例 12-7. include() および return() ステートメント
return.php
$var = 'PHP';
$var を返します;
?>
noreturn.php
$var = 'PHP';
?>
testreturns.php
$foo = 'return.php' を含めます;
echo $foo; // 'PHP' を出力します
$bar = 'noreturn.php' を含めます;
echo $bar; // 1 を出力します
?>
include が正常に実行されたため、$bar の値は 1 です。上の例の違いに注目してください。 1 つ目はインクルードされたファイルで return() を使用し、もう 1 つは使用しません。ファイルを変数に「含める」他の方法としては、fopen()、file()、または include() を出力制御関数と組み合わせて使用する方法があります。
を生成します