requireとrequireを深く理解するonceとincludeおよびinclude_onceの違い

5792 ワード

詳細
http://www.jb51.net/article/37942.htm
この記事はrequireとrequireについてです.onceとincludeおよびinclude_onceの違いを詳しく分析して紹介したので、必要な方は参考にしてください
PHPは高速、信頼性、プラットフォーム間アプリケーション、ソースコードの開放などの特徴を持っており、PHPは最も人気のあるサーバー側Script言語の一つとなっている.私は自分が仕事で感じたことに基づいて、PHPの使用の心得を紹介して、みんなに役に立つことを望んでいます.PHPのInclude filesを利用してあなたのウェブサイトを維持します.あなたが開発したウェブサイトの規模が大きくても小さくても、PHPプログラムやHTMLオリジナルコードを繰り返し使用することの重要性を認識する必要があります.例えば、サイトのページの最後の著作権宣言は少なくとも毎年1回修正されなければなりません.もしあなたのサイトに多くのページがあれば、どうすればいいですか.これらのページを一つ一つ修正するのは頭が痛いに違いない.PHPではいくつかの異なる方法でプログラムコードを繰り返し使用することができます.どの関数を使用するかは、繰り返し使用する内容によって決まります.これらの主な関数には、*include()とinclude_が含まれます.once()*require()とrequire_once()1.include()関数は、指定したファイルを読み込み、中のプログラムを実行します.例:include('/home/me/myfile');インポートされたファイルのプログラムコードは実行され、これらのプログラムは実行時にソースファイルでinclude()関数に呼び出された場所と同じ変数範囲(variable scope)を持つ.同じサーバの静的アーカイブをインポートしたり、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()関数を使用して著作権宣言(copyrights)をインポートすることに慣れていますを選択します.
 
    



[ ]

//
require('/home/me/mycopyright');
?>


一方、私は通常、プログラムの先頭でinclude()関数を使用して、いくつかの関数ライブラリまたは類似のプログラムコードをインポートします.
 
    

//
include('/home/me/myfunctions');
// PHP
?>



[ ]


次に、この最初の論理的な質問をするかもしれません.「インポートされたファイルはどこに置きますか?」短い答えは、「サーバファイルシステムのどこに置いてもいいです.」ただし、インポートされたファイルには、単純なプログラムコードクリップのほかに、データベースシステムを接続するために使用するアカウントやパスワードなどの機密資料が含まれている場合は、Webサーバのファイルルートディレクトリの下に置かないことをお勧めします.そうすれば、他の人が簡単にこれらの資料を盗むことができるからです.
 
これらの含まれているファイルをシステムのいずれかのディレクトリに入れることができます.唯一の条件はPHP自体が実行するための身分(www,nobodyまたは他の身分)がこれらのファイルを読み取るのに十分な権限を持たなければならないことです.これらのファイルの拡張子も任意に取ることができ、添付名がなくても構いません.
include()とrequire()を上手に使って、サイト内で常に変動する共有コンテンツを合理的に分割し、サイトのコンテンツを更新する際に容易に行うことができます.
PHPを利用してファイルシステムPHPを維持するには、ファイルシステムに関連する多くの関数を提供しています.ファイルを開くだけでなく、ディレクトリの内容を表示したり、ファイルの位置を移動したり、その他の多くの機能を提供したりすることができます.ブラウザを通じてファイルの内容を管理できるPHPプログラムを書いた友人もいます.
PHPのアーカイブシステムに関する機能を紹介する前に、Windowsオペレーティングシステムでは、アーカイブパスは斜線(/)または反斜線()で表すことができますが、他のオペレーティングシステムでは斜線しか使用できません.統一性を保つために、次の例のアーカイブパスは斜線を使用します.
次の例のプログラムでは、基本的なディレクトリの内容表示機能を教えます.各ステップにコメントがありますので、直接読んでください.
 
    
/* $dir_name */
$dir_name = "/home/me/";
/* opendir() , (handle) */
$dir = opendir($dir_name);
/* , HTML , 。 */
$file_list = "
    ";
    /* while 。 「.」 「..」, 。 */
    while ($file_name = readdir($dir)) {
    if (($file_name != ".") && ($file_name != "..")) {
    $file_list .= "
  • $file_name";
    }
    }
    /* HTML */
    $file_list .= "
";
/* PHP */
closedir($dir);
?>


 




Files in: echo "$dir_name"; ?>



echo "$file_list"; ?>


上記の手順を経て、あるディレクトリのファイル名をWebページに表示することに成功しました.しかし、あるディレクトリまたはファイルを読み込むには(ファイルの内容を読み取る方法は後述します)、PHP自体が実行するために使用する身分は、少なくともそのディレクトリまたはファイルの読み取り権限を持っていなければなりません.そうしないと、システムは権限不足のエラーメッセージを表示します.
 
次の例では、ファイルをコピーする方法を説明します.
 
    
/* $orginal , $copied */
$original = "/home/me/mydatabasedump";
$copied = "/archive/mydatabasedumo_1010";
/* copy() 。 , 。 */
@copy($original, $copied) or die(" 。");
?>

上記の例のプログラムは、アーカイブバックアップシステムプログラムに拡張するために使用できます.このプログラムが実行されると、データベースのデータファイルを他のディレクトリの下にコピーしてバックアップとして使用します.システムのスケジュールファイルの内容を変更すれば(crontab)これにより、このプログラムを毎日の一定時間に自動的に実行することができ、システムの自動バックアップを達成することができ、手動で実行する必要はありません.
 
システムにLynxソフトウェア(Lynxは純粋な文字のWebブラウザ)がインストールされている場合は、システムスケジュールファイルに次の記録を追加して、固定時間に自動的にLynxをアクティブにし、私たちが前に書いたPHPバックアッププログラムを呼び出すことができます.Lynxコール(ブラウズ)私たちのPHPプログラムの場合、このプログラムは実行され、バックアップファイルが生成されます.次の例では、毎朝5時にバックアッププログラムを実行し、実行後に自動的にLynxプログラムを閉じます.0 5***[username] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1システムにCGIバージョンのPHPがインストールされている場合は、Lynxで私たちのPHPプログラムphpのincludeとrequireの違いを呼び出す必要がなく、PHP実行ファイルを直接呼び出すことができます.ロードするファイルが存在しない場合、includeはwarningに警告します.実行を続行します.requireはfatal errorに与えられ、スクリプトを直接終了します.==============================================================================================================================致命的なエラーが発生します.つまり、ファイルが失われたときにページの処理を停止したい場合は、迷わずrequire()を使用してください.include()はそうではありません.スクリプトは実行されます.