PEAR(PHP Extension and Application Repositoryの略で読み方は果物の梨と同じように「ペア」と発音します)とは オープンソースにて提供されているPHP開発環境用の構造化された拡張ライブラリです。
PHPではプログラミング知識がなくても簡単に手っ取り早くプログラム開発が出来てしまうのですが、1から開発したけど 実はこの拡張ライブラリーに既に同様な機能がありしかもこちらのほうが機能的にすぐれていたということがあるかもしれません。
ライブラリーの内容・使用方法の理解に時間がかかるかもしれませんが、最終的にはこちらを 活用したほうが効率も良く精度のよいものが出来上がるはずです。

またPEAR に含まれるコードは、「パッケージ」に分けられています。
PEAR パッケージはすべてpear.php.net(日本語マニュアルも公開されています)のデータベースに登録された上で、 アップロードされています。こちらから必要なパッケージをパッケージマネージャーを使用してダウンロードすれば使用することが可能と なります。

この章ではPEARのインストール解説/便利なライブラリー機能の活用方法を簡単ではありますが随時UPしていきたいと 考えております。


[PEARのインストール/PEARの標準コーディング規約/ライブラリ一覧]
 
PEARのインストール
1) パッケージマネージャーのインストール
Windows版PHPでPEARを利用するにはまずパッケージマネージャーをインストールする必要があります。 下記にパッケージマネージャーのインストール手順を示します。
またこのパッケージマネージャーをインストールしただけではまだPEARに利用は出来ません。 インストール後にパッケージマネージャーの機能を使用して必要なライブラリーをインストールし ていく手順となります。

@インストール実行
DOSプロンプトを立ち上げ、PHPのインストールフォルダにチェンジする。
 c:\>cd c:\php
下記コマンドを入力し実行する。
 c:\php>php -n -r "include 'http://go-pear.orq';"
プロキシサーバ経由でインターネットに接続している場合は下記手順ではインストールできません。 PHPフォルダ配下のgo-pear.batを実行してインストールして下さい。


   
Aインストール状況
インストール中に確認画面が何度か表示されますが[Enter]/[Y]を入力して処理を続行させる。


DB/Mail/PHPUnit等のライブラリーも同時にインストールするかの確認画面が表示されれば[Y]を入力して処理を続行させる。


   
Bインストール状況(2)
最後にPHP.iniファイルを更新するか確認画面表示されますが[Y]を入力して処理を続行させる。
PEARライブラリーのインクルードパスを自動で書き換えてくれます。

書き換え後に[Enter]でインストールは完了です。

 
2) インストール済のPEARライブラリー確認
下記コマンドを入力し実行するとインストール済のライブラリーが一覧で表示出来ます。
 c:\php>pear list

ライブラリー名とバージョンとSTATEが一覧で表示されます。
STATEはstable:安定版、beta:ベータ版、alpha:アルファ版、devel:開発版等があります。


 
3) 利用可能なPEARライブラリーの一覧確認
下記コマンドを入力し実行すると利用可能なPEARライブラリーが一覧で表示出来ます。
件数が多いのでここではライブラリー一覧をlist_all.txtというファイル名に出力してみます。
 c:\php>pear list-all > list_all.txt



エディターでlist_all.txtを開くと以下のようなリストが作成されています。PEARライブラリーパッケージの数はは約360近くもあります。
    ALL PACKAGES:
    =============
    PACKAGE           LATEST      LOCAL
    pear/Auth_HTTP    2.1.6      HTTP authentication
    pear/Auth             1.3.0      Creating an authentication system.
    pear/Auth_SASL    1.0.1      Abstraction of various SASL mechanism responses
          ・
          ・
          ・

 
4) PEARライブラリーのインストール方法
下記コマンドの実行でライブラリーをインストール出来ます。
また自動インストール方式なので該当ライブラリーが循環参照してライブラリーも同時にインストールしてくれます。
 c:\php\pear install "package名"  例)c:\php\pear install Auth_HTTP

下記コマンドの実行でインストール済ライブラリーをアンインストール出来ます。
 c:\php\pear uninstall "package名"


PEARの標準コーディング規約
PEARの登録済パッケージはすべてPEARでの標準コーディング規約に添って作成されています。ここでは一部を抜粋して記載します。

1) インデント
空白 4 つのインデントを使用します。タブは使いません。通常は4Byteのタブによりインデントが一般的ですが どんな開発環境・エディターでも同じように表示するというポリシーでこのようになっているみたいです。 詳しくは日本語マニュアルのサイトをご参照下さい

2) PHP コードタグ
PHP コードを区分するためには、短縮型の <? ?> ではなく、 かならず <?php ?> を使用してくださいと明記されています。 オペレーティングシステムや設定が異なる情况で PHP コードを読み込む際の最も互換性の高い方法ということみたいです。

3) コードの読み込み
クラスファイルを無条件で読み込む場合は、 require_once() を使用。 クラスファイルを条件付きで読み込む場合は、 include_once() を使用する。

4) 制御構造
制御構造(if, for, while, switch )では、関数コールと区別するために、 制御キーワードと開きカッコの間に空白を 1 つ置きます。
    <?php
    if ((条件1) || (条件2)) {
        処理1;
    } elseif ((条件3) && (条件4)) {
        処理2;
    } else {
        defaultaction;
    }
    ?>

    <?php
    switch (条件) {
    case 1:
          処理1
          break;

    case 2:
          処理2;
          break;

    default:
          defaultaction;
          break;

    }
    ?>

5) 関数の呼出
関数は、関数名・開きカッコおよび最初のパラメータそれぞれの間には空白を置かず、 カンマとパラメータ間には空白を置き、最後のパラメータと閉カッコ およびセミコロンの間には空白を置かずにコールします。
    ?php
    $str_it_nm = fncgetnm($it_id, $it_dt, $it_prs);
    ?>


6) 命名規約
@クラス
クラスには、内容が理解できるような名前を指定します。 略語の使用は可能なかぎり避けます。 クラス名の1桁目大文字で始めます。 PEAR クラス階層は、クラス名にも反映され、各階層レベルは、 アンダースコアで区切られます。下記にクラス名の例を示します。

    ログ管理クラス:Log
    HTMLアップロードエラークラス:HTML_Upload_Error

A関数とメソッド
関数とメソッドは、"studly caps" 形式を使用して名前を付けます。 関数には、パッケージ間の名前の衝突を避けるためにパッケージ名を接頭辞として加えるべきです。 (接頭辞の後の)名前の最初の文字は小文字で、 新しい単語を始める際の各先頭文字は大文字とします。 いくつかの例を示します。

    connect()
    getData()
    XML_RPC_serializeData()

プライベートなクラスメンバは、 アンダースコア 1 つを前に付けます。例を示します。
プロテクテッドなクラスメンバは アンダースコアを付けません。

    プライベート:_sort()、$this->_status
    プロテクテッド:protected function sort()

B定数
定数は、すべて大文字で記述し、単語の区切りにはアンダースコアを使用します。 使用されるクラス/パッケージを大文字で表した名前を 定数の接頭辞として付加してください。 たとえば、DB:: パッケージで使用する定数は、 すべて DB_ で始めます。


パッケージライブラリー
パッケージライブラリーは現時点(2005年5月現在)で約360あります。
PEAR本家サイトの日本語マニュアルで グループ分けされているパッケージとその一覧を下記に記載します。詳細はPEAR本家サイトを参照して下さい。 チュートリアルも含まれています。
1) パッケージグループとパッケージ一覧
パッケージグループ
パッケージ名称
内    容
認証 (Authentication) Auth ユーザ認証の為のフレームワークを提供します。
Auth_HTTP HTTPベースのユーザ認証フレームワークを提供します。
Auth_PrefManager  
LiveUser  
ベンチマーク処理 LiveUser ベンチマークおよびプロファイリングに関するパッケージ群です。
キャッシュ Cache_Lite キャッシュ生成のためのパッケージ群です。
設定 (Configuration) Config Configパッケージは設定操作の関数を提供します。
コンソール Console_Getopt コマンドライン引数の取得と処理をかんたんに行う機能を提供します。
Console_Table コンソールテーブルを構築するメソッドを提供します。
データベース DB SQL データベースにアクセスするための統一された API です。
DB_DataObject  
DB_DataObject_FormBuilder  
DB_QueryTool  
DB_Table  
MDB  
MDB2  
MDB_QueryTool  
日付と時間 (Date and Time) Calendar  
Date_Holidays  
暗号化 (Encryption) Crypt_CHAP 暗号化および復号に関するパッケージ群です。
イベント Event_Dispatcher イベントベースの開発のためのパッケージを提供します。
ファイル形式 Contact_Vcard_Build  
Contact_Vcard_Parse  
File_Archive  
File_DICOM  
File_Fstab fstab ファイルやその他同じフォーマットのファイル、例えば Linux システムの /proc/mounts などの読み書きです。
File_Passwd passwd 形式のファイルを管理するパッケージ
MP3_Id MP3 ファイルの IDv1 情報タグを読み書きするメソッドを提供します。
Spreadsheet_Excel_Writer Excel スプレッドシートを作成するパッケージを提供します。
ファイルシステム Archive-Tar (圧縮された) Tar アーカイブを操作するためのAPIを提供します。
File 一般的なファイル、ディレクトリルーチンを操作するためのAPIを提供します。
File_Find ファイルやディレクトリツリーを検索するために共通で必要となる関数群。
File_SMBPasswd SAMBA パスワード形式のファイルを管理するための API を提供します。
File_SearchReplace ファイル群中のテキストを置換するAPIを提供します。
File_HtAccess .htaccess ファイルの生成や操作のためのメソッドを提供します。
Gtk FileDrop  
Gtk_ScrollingLabel  
Gtk2 Gtk2_FileDrop  
Gtk2_VarDump  
HTML HTML_Crypt  
HTML_Form これは、簡単な HTML フォーム生成器です。 ファイルアップロードを含む HTML フォーム要素型の全てをサポートします。 独立したフォーム要素型、あるいは、固定レイアウトを使った "表モード" での全てのフォームを返したり、出力します。
HTML_Menu  
HTML_QuickForm HTML_QuickForm パッケージは、HTML フォームの生成、検証および処理を行うメソッドを提供します。
HTML_QuickForm_Controller  
HTML_Table  
HTML_Template_Flexy 極めて強力なトークナイザを実装したテンプレートエンジン。現在はベータ版です。
HTML_Template_IT  
HTML_Template_Sigma  
HTML_Template_Xipe  
HTML_TreeMenu  
Pager データをページングするクラスで、ページへのリンクも生成します。
Pager_Sliding データをページングするクラスで、ページへのリンクも生成します。
HTTP HTTP Hyper-Text-Transfer-Protocolに関連した、 有用な静的関数セットを提供します。
HTTP_Client シンプルな HTTP クライアントクラスです。 このクラスは、HTTP_Request をラップしており、 多様な HTTP リクエストを処理することができる高レベルの API を持っています。 HTTP リダイレクトやクッキーのストア、リファラのセットなどを行うことができます。
HTTP_Download HTTP経由でダウンロードするものを送出します。
HTTP_Request HTTP リクエストを実行するための簡単な方法を提供します。 GET/POST/HEAD/TRACE/PUT/DELETE、Basic認証、プロキシ、プロキシ認証、SSL、 ファイルアップロードなどをサポートします。
HTTP_Upload HTML フォーム経由で送信されたファイルを お手軽かつ安全に管理します。
画像 (Images) Image_Graph 開発段階。
Image_Text PHP を使用して生成される GD2 画像に対して高度なテキスト操作性を提供します。 独自の画像にテキストクリップを簡単に追加したり、 自動的に輪郭線を決定させたり、 テキストボックスを中心もしくは左上角を中心として回転させる事ができます。 これらは、Image_Text が提供する特徴の一部でしかありません。
国際化対応 (Internationalization) I18Nv2 国際化対応および地域化に関するパッケージ群です。
Translation2 国際化対応および地域化に関するパッケージ群です。
ログ処理 Log ログ処理のためのパッケージ群です。
メール Mail メール送信のためのインターフェース。
Mail_IMAP c-client (IMAP) 拡張を利用したバックエンド処理を シンプルにします。 一般に利用されている c-client 関数の OO ラッパーとして動作します。 ボディの処理と同様、構造とヘッダのパース機能も提供します。
Mail_Mime 複雑なマルチパートメールの作成を容易にするパッケージです。 Mail_mimePartを使用することで、 よりよいMIME生成の制御が出来ます。
Mail_Queue メールキュー管理のための基本クラス。
数値計算 (Math) Math 数値計算用のパッケージ群です。
ネットワーク処理 Net_CheckIP IPv4アドレスの検証。
Net_DNS 一般的な DNS 問い合わせとパケットの解析。
Net_DNSBL ホストもしくは URL がひとつまたは複数の DNSBL にリスト されているかどうかを 調べるメソッドを提供します。
Net_Finger サーバ上のユーザについての情報を提供するサービスです。 インターネット上の多くのサーバでは、セキュリティ上の理由から finger プロトコルが 使えなくなっています。したがって、このサービスが 有効に使えるのはイントラネットや ローカルホストの管理ということになります。
Net_FTP FTP サーバとの快適な通信を提供します。 主な機能は PHP の組み込み FTP 関数に対するオブジェクト 指向ラッパです。 また、指定したフォルダ以下の再帰的なアップロードやダウンロード、 指定した フォルダ以下の再帰的な削除等 組み込み FTP 関数には含まれない機能も提供します。 ディレクトリ内の一覧機能は、 より構造化された形式でディレクトリやファイルを扱えるように拡張されています。
Net_GameServerQuery ゲームサーバへの問い合わせを行うための共通 API を提供する 。
Net_Geo サービスへの問い合わせを行い、IP アドレスから 地理的な位置を取得するパッケージです。
Net_IPv4 IP アドレスとネットマスクを使った処理のためのいくつかのメソッドを 提供します。
Net_IPv6 'Internet Protocol v6' を使った機能を提供します。
Net_NNTP NNTP プロトコルを実装したものです。
Net_Ping Pingコマンド用APIです。
Net_POP3 POP3クラスはPOP3サーバーへのアクセスを提供します。
Net_Portscan ポートスキャンを行うための API を提供します。
Net_Server デーモンを生成するための一般的なサーバパッケージ。
Net_SmartIrc IRC ネットワークを利用した通信を行うための PHP クラスで、 RFC 2812(IRC プロトコル)の仕様に従っています。
Net_SMTP PEAR の Net_Socket:: クラスを用いた SMTP プロトコルの実装を提供する。
Net_Socket TCP/IP ソケット通信のための 一般的な API を提供します。
Net_Traceroute  
Net_Whois Whois サービスを利用するための API を提供します。
数 (Numbers) Numbers 数の処理のためのパッケージ群です。
支払い (Payment) Payment 支払い関連の標準およびオファーに関するパッケージ群です。
PEAR PEAR_Frontend_Gtk2  
PEAR_Info 現在インストールされているPEARに関する情報を表示します。 PHPのphpinfo() と類似です。
PEAR_PackageFileManager PEAR の package.xml ファイルの <filelist></filelist> セクションを更新して現在の状態を反映し、リリースの準備をする 。
PEAR_PackageUpdate  
PHP phpDocumentor ソースから直接 PHP コード API を自動的にドキュメント化する機能を提供する 。
PHP_Compat PHP の古いバージョンに存在しない機能を提供します。
PHPUnit 関数およびクラスを自動的にテストするテスト用アプリケーションを作成す るための簡単なフレームワークを提供します。
PHPUnit2  
科学 (Science) Science 科学的な用途のためのパッケージ群です。
ストリーム Stream_Var ストリーム API に関するパッケージ群です。
構造 (Structures) Structures_DataGrid  
Structures_Graph  
Structures_Tree  
システム System_Folders  
System_ProcWatch  
System_WinDrives  
システム Text_CAPTCHA CAPTCHA (Completely Automated Public Turing tests to tell Computers and Humans Apart : コンピュータと人間を 区別するための、完全に自動化された公開チューリングテスト) を実装したものです。
Text_Highlighter  
Text_Password サポートされた異なる種類のパスワードと、 それらの使用法のために例を提示します。
Text_Statistics テキスト文書の可読性を計算する 。
Text_Wiki 構造化されたプレーンテキスト内の Wiki マークアップの解析および レンダリングを抽象化する 。
ツール・ユーティリティ VersionControl_SVN  
XML XML_Beautifier XML文書を「美化する」パッケージです。 このパッケージはXML文書に改行、 字下げおよび他のレイアウト要素を加えます。 したがって、人間によって容易に読むことが出来るようになります。
XML_DTD DTD ファイルのパースと、XML 文章の DTD 検証を行う 。
XML_Feed_Parser  
XML_Parser PHP の XML 拡張機能をオブジェクト指向により 抽象化したものです。 これにより、XML 文書を扱う場合に必要なメソッド、 たとえば、自動エラー処理、 ファイルやURL・文字列から得られたデータのパース (構文解析)、さらにコールバック の簡単な登録方法などが得られ、 XML 文書の処理が容易となります。
XML_RDDL  
XML_RSS リソース記述フレームワーク(RDF)と、 リソースサイト要約(RSS)ドキュメントの解析をします。
XML_Serializer 配列やオブジェクトのような複雑なデータ構造を XML ドキュメントにシリアライズします。 このクラスは、DOM の必要なしに、必要とする XML ドキュメントを生成する手助けをします。
XML_sql2xml SQL クエリを XML 形式のリザルトセットへ変換します。
XML_Statistics 統計的にXML文書を分析するパッケージです。
XML_Transformer  
XML_Tree ツリー表現を用いた構造XML文書を構築します。
XML_Util XMLドキュメントの作成助けるしばしば必要とされる関数のコレクション。
Web サービス Services_Delicious ソーシャルブックマークサイトである del.icio.us を抽象化したものです。 del.icio.us は人的なコレクションへ好きにサイトのリンクを容易に加えることができ、 それらのサイトはキーワードによって分類され、そしてあなたのコレクションはあなたのブラウザ とマシンだけでなく、他者にも共有されます。
Services_Ebay  
Services_Technorati  
Services_Yahoo REST ベースの XML インターフェイスを 使用して Yahoo のサービスと通信するためのオブジェクト指向モデルを 提供します。
UDDI PHP での UDDI 実装 。
XML_RPC XML-RPC プロトコルの PHP による実装。
XML_RPC2  

Copyright (C)2006 TwoNess,inc. All rights reserved.