tomimemo
PearDB
最終更新:
匿名ユーザー
-
view
PEARって
PHP4以降?なら普通に付属してくる、いろんなものの作成を楽にしてくれるクラス群?
日本語マニュアルhttp://pear.php.net/manual/ja/index.php
日本語マニュアルhttp://pear.php.net/manual/ja/index.php
PEARインストール
windowsの場合、PHPインストールディレクトリ以下にあるgo-pear.batを叩く。DOS窓が開く。全部エンターキーもしくはYes。(設定項目7のphpパスだけ何故か空だったので、ここだけ設定)PHPインストールフォルダ以下にPEAR_ENV.regができるのでそれをダブルクリック。終了。
Linuxの場合は、PHPをインストールした時点でPEARが使えるようになっているはず?
Linuxの場合は、PHPをインストールした時点でPEARが使えるようになっているはず?
PEAR DBインストールと動作確認
以下コマンド入力してするとネットワークインストールが開始される。
pear install DB
ネットワークインストールできない場合は、http://pear.php.net/get/DB-1.7.6.tgz をダウンロードして適当なディレクトリに保存後、以下コマンド。
pear install 保存先ディレクトリ名の絶対パス/DB-1.7.6.tgz
php.iniのinclude_pathの部分にpearへのパスが通っているか確認。通ってなければパスを通す。
# windowsの場合 include_path=".;d:/php/pear" # linuxの場合 include_path=".:/usr/local/lib/php/pear"
apache再起動して完了。
以下ソースを書いてmysqlに接続。テーブルの内容が表示されたのでOK。
<?php require_once("DB.php"); $sql = "select * from table"; //mySQL接続 $config = "mysql://username:password@hostname/dbname"; $db = DB :: connect($config, true); $db->setFetchMode(DB_FETCHMODE_ASSOC); $result = $db->query($sql); while( $rows = $result->fetchRow() ) { echo nl2br( print_r( $rows, true )); } ?>
前日にいれたSmartyを試したら、「パスが通ってないよ」系のエラーが表示された。
php.iniを確認してみたら、Smartyへのパスがコメントアウトされていた。
インストール時のgo-pear.batを叩いた影響。
php.iniを確認してみたら、Smartyへのパスがコメントアウトされていた。
インストール時のgo-pear.batを叩いた影響。
で、コメントアウトを外したら、今度はSmartyが動かなかったり、DB.phpが読み込まれなかったり...
include_pathが複数行に渡ってある場合はアウトなのか?
include_pathが複数行に渡ってある場合はアウトなのか?
とりあえず、include_path を一行にまとめたところOKとなった。
× include_path=".;D:\php\pear;D:\php\includes" include_path=".;D:\php\lib\Smarty" ○(一行にまとめた) include_path=".;D:\php\pear;D:\php\includes;D:\php\lib\Smarty"
PEARDBのExceptionラッパー
神のカキコミを保管(爽)
小山です。 最近になってようやく PHP5 で実用コードを書き始めています。 PHP5 で PEAR を利用する際にはエラー処理をどのようにするのかが悩まし いところだと思います。PHP5 の例外を全面に使いたいところですが、PEAR パッ ケージのクラスでは当然例外を投げてはくれずに PEAR_Error オブジェクトを 返します。この辺をなるべく簡単な記述で処理したいと思い、私は以下のクラ スを作りました。 ====================================================================== <?php require_once 'PEAR.php'; require_once 'PEAR/Exception.php'; class Hoge_ExceptionWrapper { static public function init() { static $initialized = false; if (!$initialized) { PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array('Hoge_ExceptionWrapper', 'handleError')); $initialized = true; } } static public function handleError($err) { throw self::factory($err); } static public function wrap($obj) { if (is_a($obj, 'PEAR')) { $obj->setErrorHandling(PEAR_ERROR_CALLBACK, array('Hoge_ExceptionWrapper', 'handleError')); } } static public function factory($err) { // default exception class $class = 'PEAR_Exception'; return new $class($err->getMessage(), $err->getCode()); } } ?> ====================================================================== 使用方法は以下の通りです。 最初に Hoge_ExceptionWrapper::init(); を呼んでおくと、デフォルトの $mode で PEAR_Error を返しているクラスは、 PEAR のエラーコールバックの中で例外が throw されるようになります。 $mode を PEAR_ERROR_RETURN に直接指定しているパッケージもあるので、 その場合は従来の PEAR::isError() を用いてエラーチェックを行い、 if (PEAR::isError($obj)) { Hoge_ExceptionWrapper::handleError($obj); } のように例外に変換します。 throw される例外オブジェクトは factory メソッド内で自由に指定できま す。この例では常に PEAR_Exception を返すようになっています。 質問者の想定している回答とは全然違うと思いますが(笑)、この辺の情報が まとまってるのを見たことがなかったので、ちょっと書いてみました。 -- 小山 哲志@ビート・クラフト koyama @ beatcraft.com koyama @ hoge.org
PEAR Calendarインストール
PEAR DBに習って
pear install Calendar
と入力したが以下エラーが出た。
Failed to download pear/Calendar within preferred state "stable",
latest release is version 0.5.3, stability "beta",
use "channel://pear.php.net/Calendar-0.5.3" to install Cannot initialize 'Calendar',
invalid or missing package filePackage "Calendar" is not valid
install failed
仕方が無いので手動でインストール
Failed to download pear/Calendar within preferred state "stable",
latest release is version 0.5.3, stability "beta",
use "channel://pear.php.net/Calendar-0.5.3" to install Cannot initialize 'Calendar',
invalid or missing package filePackage "Calendar" is not valid
install failed
仕方が無いので手動でインストール
http://pear.php.net/package/Calendar/download から Calendar-0.5.3.tgz をダウンロード後、適当なディレクトリに移動。以下入力
pear install 格納されてるディレクトリ/Calendar-0.5.3.tgz