ホームページ > php教程 > php手册 > PHPの宝庫ディレクトリ - PEAR

PHPの宝庫ディレクトリ - PEAR

WBOY
リリース: 2016-06-13 12:46:18
オリジナル
937 人が閲覧しました


あなたはすでに PHP のベテランで、優れたコードをたくさん書いているかもしれません。しかし、今それらを現在のプロジェクトに追加したい場合、それは少し難しいでしょうか?友人はあなたのコードをプロジェクトのモジュールとして使用したいと考えていますが、あなたはまったく異なるコーディング スタイルを使用していることに気づきました。友人に適応させるか、書き直すこともできます。
私に従って、PEAR 標準を使用して PHP プログラムを作成してください。あなたのプログラムとコードは、PERL の CPAN と同様に、他の専門家のコードと簡単に統合されます。より高いエネルギーを生成します。

PEARRとは
PEARとは、PHP Extension and Application Repositoryの略称です。簡単に言うと、PEAR は PHP の CPAN です。

PEAR を使用する理由
PHP は、簡潔で効率的な非常に優れたスクリプト言語です。4.0 のリリースにより、PHP は最高のインターネット開発言語の 1 つになったと言えます。 , PHP は、特に中小規模の商用アプリケーションを迅速かつ効率的に開発できる必要がある Web サイト開発者にとって推奨される言語です。しかし、PHP アプリケーションの数が増え続けるにつれて、これらのアプリケーションに対する統一された標準と効果的な管理が不足しているため、PHP コミュニティが PERL コミュニティの人々と同じように相互にコードやアプリケーションを簡単に共有することが困難になっています。なぜなら、PHP には CPAN と同じ標準がないからです。アプリケーション コード モジュールを分類および管理するための統一されたコード ベース (PERL に詳しい人なら、CPAN が巨大な PERL 拡張モジュール ウェアハウスであることを知っています。作成されたアプリケーション モジュールは、次の適切な分類ディレクトリに配置できます)。もちろん、アプリケーション モジュールを作成するときもガイドラインに従う必要があります。このため、PEAR が誕生し、PHP コアとともに配布されました。 4.04から。

PEAR は私にどのようなメリットをもたらしますか?
1. 前述したように、PEAR は特定のカテゴリに従って PEAR アプリケーション コード ライブラリを管理し、他の人が結果を簡単に取得して共有できます。

2.PEAR は単なるコード リポジトリではなく、この標準を使用して PHP コードを作成すると、プログラムの可読性と再利用性が向上し、エラーの可能性が減ります。

3.PEAR は、デストラクターやエラー キャッチなどの関数を実装するための 2 つのクラスを提供することで、フレームワークを構築します。これらの関数は継承を通じて使用できます。

PEAR コーディング ルール
PEAR コーディング ルールには、インデント ルール、制御構造、関数呼び出し、関数定義、コメント、インクルード コード、PHP タグ、ファイル ヘッダー コメント ブロック、CVS タグ、URL サンプルが含まれます。一定の名前付けの 11 の側面。以下に簡単に紹介します:

インデントのルール:
PEAR ではコードをインデントするために 4 つのスペースが必要で、TAB は使用されません。 VIM を使用する場合は、次の設定を ~/.vimrc に追加します:
set Expandtab
set shftwidth=4
set tabstop=4


Emacs/ を使用している場合XEmacs では、indent-tabs-mode を nil に設定する必要があります。

しかし、私のように (X)Emacs を使用して PHP ファイルを編集したい場合は、PHP-MODE をインストールすることを強くお勧めします。これにより、PEAR コードを作成するときに、インデント スタイルが自動的に調整されます。 PHP-MODE には多くの優れた機能もあります。リソース リストから PHP-MODE の最新バージョンをダウンロードできます。

制御構造:
ここで言及する制御構造には、while スイッチなどの場合が含まれます。コントロール構造の場合は、関数呼び出しと混同されないように、キーワード (if for .. など) の後にスペースを入れ、その後にコントロールの括弧を置く必要があります。また、中括弧 {} を使用するようにしてください。たとえそれが構文的にオプションであっても、可能な限り完全に。これにより、将来新しいコード行を追加する必要がある場合に論理的な混乱やエラーが発生するのを防ぐことができます。以下に例を示します。
if ((条件 1) && (条件 2)) {
ステートメント 1;
}esleif ((条件 3)
(条件 4)) {
ステートメント2;
}else {
ステートメント 3;
}




関数呼び出しの場合、関数名と左括弧( それらの間にはスペースがあってはなりません。関数パラメータの場合、区切りのカンマと次のパラメータの間には同じスペースが必要です。最後のパラメータと右括弧の間にはスペースがあってはなりません。以下は標準の関数呼び出しです。
$result = foo($param1, $param2, $param3);
不規則な記述:
$result=foo ($param1,$param2,$param3 );
$result=foo( $param1,$param2, $param3 );




さらに、関数の戻り結果を代入したい場合は、同時に、一連の関連する代入ステートメントの場合は、
$result1 = $foo($param1, $param2 , $param3);
$var2 = $foo($param3);




関数:
関数の定義は、「1 つの真中括弧」規則に従います:
function connect(&$dsn, $persistent = false)
{
if (is_array($dsn)) {
$ dsninfo = &&dsn; else {
$dsninfo = DB::parseDSN($dsn)

if (!$dsninfo
!$dsninfo['phptype' ]) {
return $this->raiseError();
}
return true;


上記のように、パラメータにはオプションのパラメータが必要ですリストの最後で、常に意味のある関数値を返そうとします。

コメントについて:
クラスのオンラインドキュメントの場合、JavaDoc と同様に、PHPDoc によって変換できる必要があります。 PHPDoc も PEAR アプリケーションです。詳細については、http://www.phpdoc.de/ にアクセスしてください。クラスのオンライン ドキュメントに加えて、ドキュメント以外のコメントを使用してコードを説明することをお勧めします。 。次に、コードがどのように動作するかを忘れないよう、このコードに簡単なコメントを付けた方がよいでしょう。コメント形式の場合、C の /* */ と C の // はどちらも適切ですが、Perl やシェルの # コメント メソッドは使用しないでください。

インクルード コード:
クラス ファイルに無条件で含める必要がある場合は、必ず require_once を使用する必要があります。これにより、条件付きでコードを含める必要があります。インクルードされるファイルは 1 回だけインクルードされ、これら 2 つのステートメントは同じファイル リストを共有するため、require_once がファイルをインクルードすると、include_once が同じファイルを再度インクルードすることはなくなります。そしてその逆も同様です。

PHP コード タグ:
php コードを定義するには、単に を使用するのではなく、常に を使用します。これにより、PEAR の互換性が確保され、相互接続にも役立ちます。 -プラットフォームの移植。

ファイル ヘッダーのコメント ステートメント:
PEAR コア リリースに含める必要があるすべての PHP コード ファイルについて、ファイルの先頭に次のコメント ステートメントを追加する必要があります:
/ * vim: セットexpandtab tabstop=4 shiftwidth=4: */

// ---------------------------- ------ -------------------------------------

/ / | PHP バージョン 4.0 |

//------------------------------------- ------------ ----------------------------

// | (c) 1997、1998、1999、2000、2001 PHP グループ |

// ------------------------ ---------------- --------------------------------

// | このソース ファイルは、ファイル LICENSE にバンドルされている PHP ライセンスのバージョン 2.0 の対象です。 // |

// でワールドワイドウェブから入手可能 |

// | PHP ライセンスのコピーを受け取っていないため、ワールドワイドウェブから取得できません。

// | @php.net に連絡してください。すぐにコピーをメールで送信できます。

// ---------------------------- ------------------- ------------------------

// | 著者: オリジナル著者

// | ------------------- -------------------------------

//

// $Id$


PEAR コア コード ベースにないファイルについては、同様のコメントを追加することをお勧めします。ファイルの先頭にこのようなブロックを付けて、著作権、ライセンス、作成者などを示します。同時に、VIM の MODELINE を最初の行に追加して、PEAR のコード スタイルを VIM で維持できるようにします。

CVS タグ:
上記のように、編集または変更するファイルに CVS ID タグが含まれていない場合は、追加するか、元のファイルと同様の表現を置き換えてください。 (「最終更新日」など)

URL サンプル:
RFC 2606 を参照し、すべての URL サンプルとして「www.example.com」を使用できます。

定数の名前付け:
理解を容易にするために、定数はできるだけ大文字にする必要があり、各単語を区切るにはアンダースコアを使用します。同時に、定数が配置されているパッケージ名またはクラス名にプレフィックスを付ける必要があります。たとえば、Bug クラスの定数は Bug_ で始まる必要があります。上記はPEARのコーディングルールです。詳細なコーディングルールについては、PEARのCODING_STANDDARDファイルの説明を参照してください。これらのコーディング ルールをより深く理解するには、既存の PEAR コア モジュールのコードを参照することもできます。

PEAR の使用を開始 extends PEAR{
クラス定義...
}




もちろん、コーディングに従う必要があります前述した PEAR のルールを適用すると、やりたいことをクラスで内部実装できます。次に、これについて説明します。実際、PEAR には 2 つの事前定義クラスが用意されています。
PEAR: これは PEAR の基本クラスであり、すべての PEAR 拡張機能はそれを継承および派生する必要があります。
PEAR_Error: PEAR のエラー処理基本クラス。独自のエラー処理クラスを派生することを選択できます。

一般に、PEAR のインスタンスを直接作成するのではなく、自分で新しいクラスを派生し、この新しいクラスのインスタンスを作成する必要があります。 PEAR は基本クラスとして、いくつかの便利な関数を提供します。その中で最も重要なものはデストラクターとエラー処理です

Destructor
PHP はコンストラクターをサポートしますが、デストラクターはサポートしません。ただし、PHP は register_shutdown_function( ) 関数を使用すると、スクリプトが終了する前に登録された関数をコールバックできます。したがって、PEAR はこの機能を使用してデストラクターのシミュレーションを提供します。 mypear という PEAR のサブクラスがある場合、mypear クラスで関数名にクラス名を加えたもの、_mypear() を定義できます。この関数はこのクラスのデストラクターです。ただし、このデストラクターは C のデストラクターとは異なります。オブジェクトの削除時に実行されるのではなく、スクリプトの終了時に実行されます。結局のところ、これは単なるシミュレーションです。 register_shutdown_function() が使用されるため、出力された情報はデストラクターでブラウザーに返されません。さらに、コンストラクターでは、その親クラスのコンストラクターを呼び出す必要があります。これは、PHP が親クラスのコンストラクターを自動的に呼び出すことがないためです。デストラクターは、PEAR のコンストラクターに登録する必要があります。 PEAR ソース コード:
<br>function PEAR() { <br>if (method_exists($this, "_".get_class($this))) { <br>global $_PEAR_destructor_object_list; >$_PEAR_destructor_object_list[] = &&this; <br>} <br>if ($this->_debug) { <br>printf("PEAR コンストラクターが呼び出されました、class=%sn", <br>get_class($this)) ; <br>} <br>.... <br>function _PEAR_call_destructors() { <br>global $_PEAR_destructor_object_list; <br>if (is_array($_PEAR_destructor_object_list) && sizeof($_PEAR_destructor_object_list)) { <br>リセット($_PEAR_destructor_object_list); <br>while (list($k, $objref) = each($_PEAR_destructor_object_list)) { <br>$destructor = "_".get_class($objref) <br>if (method_exists($) objref, $destructor)) { <br>$objref->$destructor(); <br>} <br>} <br>//登録されたオブジェクトのリストをクリアします。<br><br>//重複を防止します。 <br><br>$_PEAR_destructor_object_list = array(); <br><br>} <br><br>.... <br>register_shutdown_function("_PEAR_call_destructors");




上記のコードは、PEAR がコンポーネント関数でデストラクターを実装する方法を示しています。存在する場合、現在のクラスの参照は _PEAR_call_destructors でグローバル リストに追加され、対応するデストラクターがあるかどうかが確認され、存在する場合は最後に呼び出されます。グローバルリストをクリアします。

PEAR.php のコードの最後の行で、 register_shutdown_function("_PEAR_call_destructors") を呼び出して _PEAR_call_destructors を登録します。これにより、スクリプトの実行時に PHP がこの関数をコールバックします。デストラクターを使用すると、ユーザーのリクエストの処理後に終了する前に、必要な「アフターケア」作業を行うことができます。たとえば、開いているファイルを閉じたり、データベースから切断したり、特定のデータをディスクに保存したりできます。

エラー処理
PEAR を使用すると、単にエラー コードやエラー情報を返すだけでなく、PEAR_Error オブジェクト、またはから派生した新しいエラー オブジェクトを返すことができます。 PEAR_エラー。

PEAR のエラー オブジェクトは、特定の出力形式を制限しません。ユーザーにあまり多くの情報を返さずにエラーをキャプチャすることも、同時に特別なエラー処理関数をコールバックすることもできます。エラー情報を出力する場合でも、HTML 形式で出力することもできます。PEAR_Error から新しいクラスを派生し、それを作成して「スロー」するだけです。適切なときに、この新しいクラスのオブジェクトを作成するだけです。

簡単なエラー処理:
PEAR では、最も簡単なエラー処理はエラーを「スロー」することです。単に PEAR_Error オブジェクトを作成して返すだけです。以下は簡単な例です:
<br>function myconnect($host = "localhost", $port = 1080) <br>{ <br>$fp = fsockopen($host, $port, $ errno, $errstr); <br>if (!is_resource($fp)) { <br>return new PEAR_Error($errstr, $errno); <br>return $fp; ><br>$sock = myconnect(); <br>if (PEAR::isError($sock)) { <br>print "接続エラー: ".$sock->getMessage()."<br> ; n" <br>} <br>


上記のコードに示すように、エラーが発生する可能性のあるコードを実行した後、PEAR の isError を使用して検出する必要があります。エラーがあるかどうか。PEAR_Error の getMessage を使用して最新のエラー メッセージを取得できます。注: 必ず重要な場所で PEAR::isError

を使用し、raiseError

を使用してください。PHP4.0.5 以降、PEAR にはさらに 2 つの関数があります:
setErrorHandling($mode, $options = null)
raiseError($message = null, $code = null, $mode = null,$options = null, $userinfo = null)


前者は PEAR のデフォルトのエラー処理モードを設定できます後者は、PEAR_Error オブジェクトを返すラッパー関数です。$mode や $options などのパラメータを省略した場合、デフォルト値を使用して作成されます。 PEAR_Error オブジェクトの場合、これらのデフォルト値は setErrorHandling() を使用してカスタマイズできます。

PEAR_Error
PEAR_Error は PEAR のエラー オブジェクトの基本クラスです。一般に、次の方法で PEAR_Error のインスタンスを直接作成できます。
$error = new PEAR_Error($ message, $code) 、$mode、$options、$userinfo);

$message はエラー メッセージ、$code はエラーのエラー番号、最後の 3 つのパラメータは密接に関連しています:
$mode: isエラー処理モード。次の定数を指定できます。
PEAR_ERROR_RETURN: エラー オブジェクトのみを返します (デフォルト モード)
PEAR_ERROR_PRINT: ビルド関数でこのエラー メッセージを出力しますが、現在のプログラムは実行を継続します。
PEAR_ERROR_TRIGGER: PHP のtrigger_error() を使用してエラーをトリガーするか、エラー処理関数を設定している場合、または PHP のエラー処理レベルを E_USER_ERROR に設定している場合、現在のプログラムは終了します。
PEAR_ERROR_DIE: エラーを出力して終了し、プログラムは終了します。
PEAR_ERROR_CALLBACK: コールバック関数またはメソッドを使用して、現在のエラーを処理し、プログラムを終了します。
$options: このパラメータは、$mode が PEAR_ERROR_TRIGGER および PEAR_ERROR_CALLBACK の場合にのみ機能します。PEAR_ERROR_TRIGGER の場合、$options は、PHP のtrigger_error の値と一致する 3 つの定数 E_USER_NOTICE、E_USER_WARNING、または E_USER_ERROR のいずれかである必要があります。 $mode が PEAR_ERROR_CALLBACK の場合、$options はコールバックされる関数の名前を含む文字列、または 2 つの要素の配列 (それぞれオブジェクト変数と文字列 (呼び出されるメソッドを示す)) にすることができます。
$userinfo: 追加のユーザー情報を保存します。関連するデバッグ情報をここに入力できます。

PEAR_Error には、PHP ドキュメントでは説明されていない一般的に使用されるメソッドがいくつかあります。それらは次のとおりです。

int getMode: 現在のエラー処理モードを整数で返します。
string getMessage: 現在の完全なエラー メッセージ文字列を返します。
mixed getCallback: 現在のコールバック情報を返します。これは、コールバックされる関数の名前、または (オブジェクト、メソッド) の配列である可能性があります。
int getCode: 整数のエラー コードを返します。
string getType: 間違った型 (現在のクラス名 string) を返します。
string getUserInfo: 追加のユーザー情報文字列を返します。
string getDebugInfo: 内容は上記と同じです。
string toString: エラー処理モード、レベル、エラー情報、エラー コード、関連するコールバック関数などを含む、現在のオブジェクトの詳細な文字列説明を返します。

まとめ
これで PEAR の紹介は終わりです。要約すると、PEAR の拡​​張アプリケーションを作成したい場合は、次の手順を実行する必要があります:

require_once "PEAR.php"
Use class your_pear_extend extends PEAR{} を使用して新しいクラスを定義します。
クラスのコンストラクターで、親クラス PEAR のコンストラクターを呼び出します。
function your_pear_extend{

$this->PEAR();

...
}



必要に応じて、デストラクター _your_pear_extend を定義します
必要に応じて、PEAR_Error から独自のエラー処理クラスを派生させます
エラー処理パターンを設定し、必要に応じてエラーをトリガーします。
エラーを生成する可能性のあるコードを実行した後、PEAR::isError($obj) を使用して、対応するエラーをキャプチャします。
独自の機能を実装します。
最新の PEAR コア リリースである PHP4.05 には、PHPDoc、Cache、HTML などの優れたアプリケーション モジュールがすでに多数あります。もちろん、CPAN と比較すると、PEAR はまだ始まったばかりであり、PHP を必要とします。コミュニティの人々の努力により、PHP はますます強力になっていきます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート