ホームページ  >  記事  >  php教程  >  PHP アプリケーションの 2 つの古典的なテクニック

PHP アプリケーションの 2 つの古典的なテクニック

WBOY
WBOYオリジナル
2016-06-21 09:12:08752ブラウズ

ヒント

(Coolman)

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

PHP のインクルード ファイルを使用して Web サイトを保守しましょう
開発する 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 行ずつコンパイルして実行しますが、これは変更されています) PHP 4.0 では、まずプログラム コード全体がコンパイルされてから、コンパイルされたプログラム コードが一度に実行されます。コンパイル プロセス中にプログラム コードは実行されません。 require() は通常、静的コンテンツのインポートに使用されますが、include() は動的プログラム コードのインポートに適しています。

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

<HTML>
<HEAD><TITLE>ウェブページのタイトル</TITLE></HEAD>
<BODY>
[コンテンツの束]
<?
// 著作権宣言文をインポート
require(' /home /me/mycopyright');
?>
</BODY></HTML>
一方、私は通常、プログラムの先頭で include() 関数を使用して、関数ライブラリや同様のプログラム コードをインポートします。 :

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

質問: 「これらのインポートされたファイルはどこに行きますか?」 簡単に言うと、「サーバーのファイル システムのどこにでも」です。ただし、インポートされたファイルがフラグメント以外の場合は、また、データベース システムへの接続に使用されるアカウント番号やパスワードなどの機密情報も含まれています。これらのファイルを Web サーバーのファイル ルート ディレクトリに配置しないことをお勧めします。そうすると、他の人が簡単に盗むことができます。これらの情報。

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

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


PHPを使用してファイルシステムを保守します

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

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

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

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

</HEAD>
<BODY>
<!-- PHP プログラムを使用してディレクトリ名を指定します読み取ったファイルがページに表示されます-->
<P>ファイル名: echo "$dir_name"; ?>



<? echo "$file_list"; ?>
</BODY>
</HTML>
上記の手順を実行すると、Web ページが起動しました。ただし、覚えておく必要があることが 1 つあります。ディレクトリまたはファイルを読み取るには (ファイルの内容を読み取る方法は後で紹介します)、PHP 自体が実行するために使用する ID には、少なくともディレクトリまたはファイルに対する読み取り権限が必要です。そうでない場合は、システムが「権限が不十分です」というエラー メッセージが表示されます。

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

<? /* 変数 $orginal にはソース ファイルのフル パスが格納され、変数 $copied にはコピーされた新しいファイルのフル パスが格納されます。 */
$original = "/home/me/mydatabasedump";
$copied = "/archive/mydatabasedumo_1010";
/* copy() 関数を呼び出して、元の場所から新しい場所にファイルをコピーします。コピーできない場合は、プログラムの実行が終了し、エラーメッセージが表示されます。 */
@copy($original, $copied) または 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 実行可能ファイルを直接呼び出すことができます:

0 5 * * * [ユーザー名] php /path/to/copyfile.php 1>/dev/null 2>&1



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。