ホームページ >バックエンド開発 >PHPチュートリアル >require、require_once、include、include_once_PHP チュートリアルの違いを深く理解する

require、require_once、include、include_once_PHP チュートリアルの違いを深く理解する

WBOY
WBOYオリジナル
2016-07-21 15:09:33936ブラウズ

PHP には、高速で信頼性の高いクロスプラットフォーム アプリケーションとオープン ソース コードという特徴があり、最も人気のあるサーバーサイド スクリプト言語の 1 つとなっています。私が仕事で経験したことをもとに、PHPを使ってみた経験を皆さんの参考になれば幸いです。

Web サイトを保守するには PHP のインクルード ファイルを使用してください
開発する Web サイトのサイズが大小に関係なく、PHP プログラムを再利用するか、HTML ソース コードを再利用するかにかかわらず、プログラム コードを再利用することの重要性を認識する必要があります。たとえば、Web サイトのページの最後にある著作権表示は、少なくとも 1 年に 1 回は改訂する必要があります。Web サイトに多くのページがある場合はどうすればよいでしょうか。これらのページを 1 つずつ変更するのは大変な作業でしょう。 PHP を使用すると、プログラム コードをさまざまな方法で再利用できます。どの機能を使用するかは、再利用したいコンテンツの種類によって異なります。

これらの主な関数は次のとおりです:
* include() および include_once()
* require() および require_once()

1.include() 関数は、指定されたファイルを読み取り、そのプログラムを実行します。
例: include('/home/me/myfile');
インポートされたファイル内のプログラムコードが実行され、実行されると、これらのプログラムにはソース内で include() 関数が呼び出される場所が含まれます。ファイルの変数スコープは同じです。同じサーバーから静的ファイルをインポートしたり、 include() 関数と fopen() 関数を組み合わせて他のサーバーからファイルをインポートしたりすることもできます。

2. include_once() 関数の機能は include() とほぼ同じです
唯一の違いは、 include_once() 関数は、インポートされるファイルがプログラム内の他の場所にインポートされているかどうかを最初にチェックすることです。 、ファイルは繰り返しインポートされません (この関数は場合によっては非常に重要です。たとえば、インポートされるファイルが自分で定義したいくつかの関数を宣言している場合、そのファイルが同じプログラム内で繰り返しインポートされると、エラー メッセージが表示されます)。 PHP では同じ名前の関数を 2 回宣言することができないため、2 回目のインポート時に発生します)。

3.require() 関数は、対象ファイルの内容を読み取り、読み取った内容で自分自身を置き換えます。
この読み取りと置換アクションは、PHP エンジンがコンパイルされたプログラム コードの実行を開始するときではなく、PHP エンジンがプログラム コードをコンパイルするときに発生します (PHP 3.0 エンジンの動作方法は 1 行 1 行コンパイルして実行しますが、変更されています) PHP 4.0 では、PHP 4.0 は最初にプログラム コード全体をコンパイルし、次にコンパイルされたプログラム コードを一度に実行します。コンパイル プロセス中にプログラム コードは実行されません。 require() は通常、静的コンテンツのインポートに使用されますが、include() は動的プログラム コードのインポートに適しています。

4. include_once() 関数 と同様に、require_once() 関数は、ターゲット ファイルのコンテンツが以前にインポートされているかどうかを最初に確認します。そうであれば、同じコンテンツは再度インポートされません。
私は個人的に、require() 関数を使用して、著作権、静的テキスト、または変数自体を含まない、または正しく実行するために他の実行プログラムに依存する必要があるその他のプログラム コードをインポートします。例:

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


ウェブページのタイトル

[大量のコンテンツ]
// 著作権宣言文をインポート
require('/home/me/mycopyright');
?>



一方、通常、 include() 関数は、関数ライブラリまたは同様のプログラム コードをインポートするためにプログラムの先頭で使用されます:
コードをコピーします コードは次のとおりです:

//関数ライブラリをインポートします
include ('/home/me/myfunctions');
//以前にインポートした関数ライブラリで定義された PHP 関数を使用して、いくつかの関数を実行します
?>

ウェブページのタイトル

[大量のコンテンツ]


次に尋ねる論理的な質問は「これらのインポートされたファイルはどこに置くべきですか?」です。簡単に言うと、「サーバー ファイル システムのどこにでも問題ありません。ただし、インポートされたファイルに機密情報が含まれている場合は注意してください。」データベース システムへの接続に使用されるアカウント番号やパスワードなどの単純なプログラム コード フラグメントに加えて、これらのファイルを Web サーバー ディレクトリのファイル ルートに配置しないことをお勧めします。そうすることで、他のファイルが保存される可能性があります。簡単に情報を盗みます。

これらのインクルード ファイルはシステムの任意のディレクトリに配置できます。唯一の条件は、PHP 自体が実行するために使用される ID (www、nobody、またはその他の ID) がこれらのファイルを読み取るための十分な権限を持っている必要があることです。これらのファイルの拡張子は、ファイル拡張子がない場合でも、必要に応じて選択できます。

include() と require() を上手に活用して、Web サイト内で頻繁に変更が必要な共有コンテンツを合理的に分割すると、Web サイトのコンテンツを更新するのがはるかに簡単になります。

PHP を使用してファイル システムを保守する
PHP はファイル システムに関連する多くの機能を提供しており、ファイルを開くだけでなく、ディレクトリの内容を表示したり、ファイルの場所を移動したりすることもできます。友人の中には、ブラウザを通じてファイルのコンテンツを管理できる PHP プログラムを作成した人もいます。

PHP のファイル システム関連機能の紹介を始める前に、まず 1 つのことを明確にしておく必要があります。Windows オペレーティング システムでは、ファイル パスはスラッシュ (/) またはバックスラッシュ () で表すことができますが、他のオペレーティング システムでは、スラッシュのみを使用してください。均一性を維持するために、以下の例のファイル パスではスラッシュが使用されています。

次のサンプルプログラムでは、基本的なディレクトリコンテンツ表示関数を説明します。各ステップにはコメントが付いていますので、直接読んでください。

コードをコピーします コードは次のとおりです:

$dir_name = "/home /me/";
/* opendir() 関数はディレクトリを開き、プログラム内でディレクトリを参照できるように参照値 (ハンドル) を返します*/
$dir = opendir($dir_name);
/ * Start ディレクトリ内のファイルの名前を表示するために使用される HTML リスト タグを含む文字列を作成します。 */
$file_list = "
    ";
    /* while ループ ステートメントを使用して、以前に開いたディレクトリ内のすべてのファイルを読み取ります。読み込んだファイル名が「.」または「..」でない場合は、上記文字列にファイル名が書き込まれます。 */
    while ($file_name = readdir($dir)) {
    if (($file_name != ".") && ($file_name != "..")) {
    $file_list .= "
  • $file_name";
    }
    }
    /* HTML リストのラベルに末尾を追加します*/
    $file_list .= "
";
/* 以前に開いたディレクトリを閉じて、この PHP プログラムを終了します*/
Closedir($dir);
?>




内のファイル:







上記の手順を完了すると、Web ページ上の特定のディレクトリにあるファイル名が表示されます。ただし、覚えておく必要があることが 1 つあります。ディレクトリまたはファイルを読み取るには (ファイルの内容を読み取る方法は後で紹介します)、PHP 自体が実行するために使用する ID には、少なくともディレクトリまたはファイルの読み取り許可が必要です。システムに「権限が不十分です」というエラー メッセージが表示されます。

次の例では、ファイルをコピーする方法を説明します:

コードをコピー コードは次のとおりです:
$original = "/home/me/mydatabaseump"
/* を呼び出します。 copy() 関数を使用して、ファイルを元の場所から新しい場所にコピーします。コピーできない場合は、プログラムの実行が終了し、エラーメッセージが表示されます。 */
@copy($original, $copyed) または die("ファイルをコピーできません。");
上記のサンプルプログラムは、ファイルバックアップシステムプログラムに拡張できます。このプログラムが実行されると、バックアップのためにデータベース データ ファイルが他のディレクトリにコピーされます。システムのスケジュール ファイル (crontab) の内容を変更する限り、このプログラムを 1 日 1 回定時に自動的に実行し、手動で実行することなく自動システム バックアップを実現できます。

システムに Lynx ソフトウェアがインストールされている場合 (Lynx はテキスト専用の Web ブラウザーです)、次のレコードをシステム スケジュール ファイルに追加して、システムが一定の時刻に Lynx を自動的にアクティブ化し、PHP を記述する前に当社に電話できるようにすることができます。バックアッププログラム。 Lynx が PHP プログラムを呼び出す (参照する) と、プログラムが実行され、バックアップ ファイルが生成されます。次の例は、毎朝 5 時にバックアップ プログラムを実行し、実行後に Lynx プログラムを自動的に閉じる方法を示しています:
0 5 * * * [ユーザー名] lynx -dump http://localhost/copyfile. 1>/dev/null 2>&1
システムに CGI バージョンの PHP がインストールされている場合は、Lynx 経由で PHP プログラムを呼び出さずに、PHP 実行可能ファイルを直接呼び出すことができます
include と require の違いは何ですか? 通常は違いはありません。ロードするファイルが存在しない場合、include は警告を表示して実行を継続し、require は致命的なエラーを発生させてスクリプトを直接終了します
= =======。 =========================================== ==
PHP マニュアル
require() と include() は、失敗の処理方法を除いて、すべての点でまったく同じです。 include() は警告を生成し、require() は致命的なエラーを引き起こします。言い換えれば、ファイルが見つからない場合にページの処理を停止したい場合は、ためらわず require() を使用してください。 include() の場合はそうではなく、スクリプトは引き続き実行されます。



http://www.bkjia.com/PHPjc/327299.html

www.bkjia.com

tru​​e

技術記事 PHP には、高速で信頼性の高いクロスプラットフォーム アプリケーションとオープン ソース コードという特徴があり、最も人気のあるサーバーサイド スクリプト言語の 1 つとなっています。私が仕事で経験したことをもとに皆さんと共有したいと思います...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。