ホームページ  >  記事  >  バックエンド開発  >  [PHP]詳しい説明付き_PHP チュートリアル

[PHP]詳しい説明付き_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:09:58955ブラウズ

ファイルの読み込み順序を含む
インクルードされたファイルを探す順序は次のとおりです:

まず、現在の作業ディレクトリに相対的な include_path の下を検索します。
次に、現在実行中のスクリプトが配置されているディレクトリに相対的な include_path の下を検索します。
たとえば、include_path は .、現在の作業ディレクトリは /includetest/、スクリプトには includetest/a.php を含める必要があり、ファイル内に include "b.php" が存在し、b.php を検索する順序になります。最初は /includetest/ で、次に /includetest/include/ です。ファイル名が ./ または ../ で始まる場合、現在の作業ディレクトリを基準とした include_path の下でのみ検索されます。

コード構造は次のとおりです:

~/public_html/includetest> ls -R
.:
a.php b.php include

./インクルード:
a.php b.php 各ファイルのコードは次のとおりです:

~/public_html/includetest>猫 a.php

set_include_path(".");
include "include/a.php";

echo __FILE__ .PHP_EOL;
~/public_html/includetest>猫 b.php

echo __FILE__ .PHP_EOL;
~/public_html/includetest>cat include/a.php
;
「b.php」を含める;
echo __FILE__ .PHP_EOL;
~/public_html/includetest> cat include/b.php

echo __FILE__ .PHP_EOL;出力結果は次のとおりです:

~/public_html/includetest> php a.php
# include/a.php に "b.php" を指定すると、includetest/b.php ファイルが最初にロードされることがわかります
/home/zhanhailiang/public_html/includetest/b.php
/home/zhanhailiang/public_html/includetest/include/a.php
/home/zhanhailiang/public_html/includetest/a.php 注: 作業ディレクトリとスクリプトが実行されるディレクトリの概念的な違い。

変数スコープを含める
ファイルがインクルードされると、そのファイルに含まれるコードはインクルード行の変数スコープを継承します。その時点から、呼び出し側ファイルのその行で使用可能な変数は、呼び出されたファイルでも使用できるようになります。ただし、インクルード ファイルで定義されたすべての関数とクラスにはグローバル スコープがあります。

コードは次のとおりです:

~/public_html/includetest>猫 c.php

「d.php」を含める;
エコー $d.PHP_EOL;
e();
~/public_html/includetest> 猫 d.php

$d = "こんにちは";

関数 e() {
echo "hello world, e()".PHP_EOL;
}
~/public_html/includetest> php c.php
ハローワールド
hello world, e() 同様に、呼び出し元ファイルの関数に include が指定されている場合、呼び出されたファイルに含まれるすべてのコードは、関数内で定義されているかのように動作します。したがって、その関数の変数スコープに従います。このルールの例外は、インクルードが発生する前にパーサーによって評価されるマジック定数です。

コード実行を含む
ファイルがインクルードされると、パーサーは PHP モードを終了し、ターゲット ファイルの先頭で HTML モードに入り、ファイルの末尾で再開します。このため、PHP コードとして実行されるオブジェクト ファイル内のコードは、有効な PHP 開始タグと終了タグ内に含める必要があります。

include はリモート ファイルを処理します
PHP で「URL fopen ラッパー」が有効になっている場合 (デフォルト構成)、ローカル ファイルの代わりに URL を指定できます (HTTP またはその他のサポートされているラッピング プロトコルを使用します。サポートされているプロトコルについては、「サポートされているプロトコル」および「ラッピング プロトコル」を参照してください)。ターゲット サーバーがターゲット ファイルを PHP コードとして解釈する場合は、HTTP GET の URL リクエスト文字列を使用して、インクルードされたファイルに変数を渡すことができます。これは、ファイルを含めて親ファイルの変数空間を継承することと厳密には同じではありません。スクリプト ファイルは実際にリモート サーバー上で実行され、ローカル スクリプトにはその結果が含まれます。

ハンドルの戻り値を含める
戻り値の処理: インクルードされたファイルで return ステートメントを使用すると、ファイル内のプログラムの実行を終了し、それを呼び出したスクリプトに戻ることができます。インクルードされたファイルから値を返すことも可能です。 include呼び出しの戻り値は通常の関数と同様に取得できます。ただし、リモート ファイルをインクルードする場合、リモート ファイルの出力に (ローカル ファイルと同様に) 正当な PHP 開始タグと終了タグが含まれていない限り、これは機能しません。タグ内で必要な変数を定義できます。これは、ファイルがインクルードされる場所の後で使用できるようになります。

include は特別な言語構造であるため、そのパラメータには括弧は必要ありません。戻り値を比較するときは注意してください。

ファイルを含めることができない場合は、FALSE を返し、E_WARNING 警告を発行します。

インクルードファイルに関数が定義されている場合、それらの関数はリターンの前か後に使用されるかに関係なく、メインファイルで使用できます。ファイルが 2 回インクルードされた場合、関数はすでに定義されているため、PHP 5 は致命的なエラーを発行しますが、PHP は関数がすでに定義されているという復帰後にエラーを表示しません。ファイルがインクルードされているかどうかを確認し、インクルードされたファイルに条件付きでそれを返すのではなく、include_once を使用することをお勧めします。

PHP ファイルを変数に「含める」もう 1 つの方法は、出力制御関数を include と組み合わせて使用​​して、その出力をキャプチャすることです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477600.html技術記事インクルード ロード ファイルの検索順序は次のとおりです。まず、現在の作業ディレクトリを基準とした include_path の下を検索し、次に現在実行中のスクリプトが配置されているディレクトリを基準とした include_path の下を検索します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。