• []
  • []
  •  
  • del.icio.us 
  •  
  • Yahoo!֥åޡϿ 

PEAR - The PHP Extension and Application Repository

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

概要

過去記事はこちら http://dozo.matrix.jp/pear/index.php

PEAR」、日本ではなじみが薄いのか解説しているページが非常に少ないですね。
超ずぼらプログラマもどきの筆者は、ものを作る上で一番大切にしていることがあります。
それは「実現するためにもっとも簡単・単純な方法を採用する」ことです。

PHPで新規に何かを作るとき、初期段階に作るのはだいたい似かよっているとおもいます。
[コンフィギュレーション],[ユーザー認証],[データベース処理],[HTMLテンプレート],[ロギング],[メール]などなど・・・。
これがあらかじめ用意されているとしたら使わない手はないでしょう!!

それが「PEAR(PHP Extension and Application Repository)」です。
http://pear.php.net/

インストール

具体的なものは追々として、まずはインストールから。
レンタルサーバの場合はこちら→レンタルサーバ
コマンド入力して聞かれた質問に答えていく感じです。

ソースコンパイル版
# lynx -source http://go-pear.org/ | php

Windows版(インストール先がC:\phpの場合)
# C:\php\go-pear.bat 

ソースコンパイル版ではconfigureオプションで[–without-pear]と指定しない限り、
make installした段階でいくつかインストールされます。
デフォルトで入っているものはgo-pearで入手したものと異なっているようです。
インストール先はデフォルトで[/usr/local/lib/php]です。
ただ、バージョンごとにインストールされるものが異なります。

インストーラーが起動するので以下の内容を変更
[Installation prefix](デフォルトは/usr/local)

PEARの基本パッケージは

PEAR共通 PEAR
TAR圧縮 Active_Tar
コマンドラインコンソール Console_Getopt
XMLリモートコントロール XML_RPC
データベース DB
ネットワーク処理 Net_Socket, Net_SMTP
メール処理 Mail
XML評価 XML_Parser
単体テスト PHPUnit

※ go-pearを使った場合の構成
ソースコンパイルだけの場合は構成がバージョンによって異なります。

追加パッケージがほしい場合はinstallコマンドを実行します。

// Stableバージョンをインストールする場合(例ではAuth) 
 # pear install Auth   

// Alpha, Betaバージョンの場合は-fを付ける(例ではNet_UserAgent_Mobile)
 # pear install -f Net_UserAgent_Mobile

// 依存関係のモジュールをすべてインストールする場合
 # pear install -a Log

install_pathにPEARのインストール先が指定されている必要がありますので、
phpinfo()を確認してください。

利用法

使用方法はインクルードするだけ。

// DBクラスを使うときは 
require_once("DB.php");

主な内容は「抽象化」にあります。

データベースならOracleをはじめ、SQLServer,PostgreSQLなど種類がたくさんあり、PHPにはそれぞれ関数が用意されています。
しかし、もし、データベース自身が変わることがあった場合、システム変更が大変になります(まぁ普通クラスを作りその部分だけ変えますが。)。
それが設定を少し変えるだけで可能になります。

require_once("DB.php"); 
 
// Mysqlなら 
$config = "mysql://username:password@host/db_name"; 
 
// PostgreSQLなら 
// $config = "pgsql://username:password@host/db_name"; 
 
// Oracleなら 
// $config = "oci8://username:password@host/db_name"; 
 
$db = DB :: connect( $config, true );    // DB接続 
$db->setFetchMode( DB_FETCHMODE_ASSOC ); // 配列モード(デフォルトはオブジェクト) 
 
$result = $db->query( $sql );            // クエリ送信 
 
while( $rows = $result->fetchRow() ){    // データ取得 
echo nl2br( print_r( $rows, true ));      // データ表示 
}

ほかにもログ処理の場合、ログを残す方法としてファイル、データベース、syslog・イベントログ、メールなどありますが、パッケージ[Log]を使うと設定を変えるだけで実現できます。

PHP5.xのWindows版でgo-pear.batを使ってみると、
インストールされるパッケージは

  Archive_Tar
  Console_Getopt
  PEAR

の三つだけになるようです。
(PHP5.1.2で確認)

さらに、pear.batというファイル名ではなく、
pearold.batとpeardev.batという二つのファイルが出来るようです。
pearold.batの名前をpear.batに変えて置く必要があります。
PEAR::DBはデフォルトで入っていないので、
コマンドプロンプトから
pear install DB
と打ってください。

コメント

-DB.phpをPEARにインストールするときはどうするの? – motokun {2005-06-21 17:36:19 (火)};
-PHPインストールすれば最初から入ってますよ。あとはinclude_pathだけ通しておけばOK – dozo {2005-06-22 00:46:07 (水)};
-追記:PHP4.3.11からPEAR::DBが標準で入っていないですね。。。ChangingLog?にはなにもかいてないのに。。。 – dozo {2005-07-01 08:16:57 (金)};
-Pearのインストール先は、どのようなコマンドで知ることができますか? – hoge {2005-07-04 14:18:54 (月)};
-[ pear config-show ]です。一覧上の[php_dir]がPEARのインストール先。 – dozo {2005-07-04 17:55:49 (月)};
-Pearga – hoge {2005-07-04 23:27:59 (月)};
-Pearが入っていないのだろうか?オプションで [–without-pear]はつけていないのだが。phpバージョン5.0.4をソースからコンパイル、OSはRedhatの2.4.20-8です。 – hoge {2005-07-04 23:31:55 (月)};
-php5.1b3をソースコンパイルしましたけど、普通に入ってましたよ。あとはphp.iniのinclude_pathにデフォルトで/usr/local/lib/phpを追加するだけでOKすね。 – dozo {2005-07-17 21:25:57 (日)};
-「php-5.1.1-Win32.zip」を解凍し、コマンドプロンプトから「go-pear.bat」を実行しました。phpを解凍したフォルダ配下のPEARフォルダにファイルが展開されたのですが、DB.phpはありませんでした。展開方法が間違ってるのでしょうか、ご教授お願いします。 – bagbeat {2005-12-06 17:00:36 (火)};
-[ – doe {2005-12-07 01:18:48 (水)};
-「PHP4.3.11からPEAR::DBが標準で入っていないですね」って上に書いてあるでしょが – doe {2005-12-07 01:19:30 (水)};
-[C:\php\pear install DB]のような感じで、改めてPEAR::DBをインストールしてみた場合どのようになりますか? – dozo {2005-12-07 14:26:00 (水)};
-でも、最近pear.php.netサーバが落ちててダウンロードに失敗することも多いですね。 – dozo {2005-12-07 14:27:18 (水)};
-上記のbatファイル展開後、コマンドプロンプトから「pear install DB」も実行しました。結果は「Cannot initialize 'DB', invalid or missing package file Package “DB” is not valid」となり失敗でした。「http://pear.php.net/packages.php」からDBパッケージをダウンロードして、直接「C:\php\pear」配下に置くことで解決しました。 – bugbeat {2005-12-08 17:32:47 (木)};
-pear install DB – {2006-04-28 13:03:06 (金)};
-PEARを php_dirで指定されたディレクトリ以外に配置して、呼び側のphpプログラム内で、パスも含めて呼び出すことは出来ますか?(php_dirの設定は変更せずに) – 初心者です。 {2006-05-02 14:55:48 (火)};
-PEARを php_dirで指定されたディレクトリ以外に配置して、呼び側のphpプログラム内で、パスも含めて呼び出すことは出来ますか?(php_dirの設定は変更せずに) – 初心者です。 {2006-05-02 15:00:30 (火)};
-PEARは基本的に単なるPHPプログラムなので、適当なディレクトリにダウンロードしてinclude_pathを通しておけば使えますよ。 – dozo {2006-05-04 11:31:08 (木)};
-Pear DBから Mysqlを操作する場合, php の configureで '–with-mysql' 必要なのですか? – GuuZuu {2006-09-19 11:17:57 (火)};
-必要です。PEAR::DBではContainerを経由してDB_MySQLクラスを呼び出し、そのクラスの中でmysql関数群を使用しています。 – dozo {2006-09-19 16:50:46 (火)};


pear.txt · 最終更新: 2007/07/28 17:35 by dozo