PDO for PHP4を使う

いまのところPHP5で作る予定のモノを、個人的な興味でPDO for PHP4使ってみてます。
うまくいったらうちのサイトにも使おうかと思って...。(←こんなこともやってます。興味のある方は是非参加してください。)
PHP4環境でもちゃんと動いてくれない箇所が多少あります。

PDO for PHP4に含まれるファイルは

以下、MySQLを使うときにいじる場所。

  • PDO.class.php(いきなし大元からうまく動かないんで...orz)

89〜98行目と262〜272行目のconstを使っている部分。

// const FETCH_ASSOC = PDO_FETCH_ASSOC;
// const FETCH_NUM = PDO_FETCH_NUM;
// const FETCH_BOTH = PDO_FETCH_BOTH;
// const FETCH_OBJ = PDO_FETCH_OBJ;
// const FETCH_LAZY = PDO_FETCH_LAZY;
// const FETCH_BOUND = PDO_FETCH_BOUND;
// const ATTR_SERVER_VERSION = PDO_ATTR_SERVER_VERSION;
// const ATTR_CLIENT_VERSION = PDO_ATTR_CLIENT_VERSION;
// const ATTR_SERVER_INFO = PDO_ATTR_SERVER_INFO;
// const ATTR_PERSISTENT = PDO_ATTR_PERSISTENT;

の部分はコメントアウトしないと使えませんでした。
で、この変更を行ったら

  • PDOStatement_mysql.class.phpの40行目あたりにある以下の行

var $__fetchmode = PDO :: FETCH_BOTH;

この部分は使えないので、コメントアウトしてひとまず

var $__fetchmode = PDO_FETCH_BOTH;

とするしかないかな。
PDO_FETCH_BOTHとかの定数は、PDO.class.phpの先頭(14〜28行目)で宣言されているけれど、PDOの標準の定数?じゃないよね?
なので、PHP5に移行するときは上の修正を元に戻すか、この定数たちを以降先に持って行くしかなさそうですね。

// SUPPORTED STATIC ENVIROMENT VARIABLES
define('PDO_ATTR_SERVER_VERSION', 4); // server version
define('PDO_ATTR_CLIENT_VERSION', 5); // client version
define('PDO_ATTR_SERVER_INFO', 6); // server informations
define('PDO_ATTR_PERSISTENT', 12); // connection mode, persistent or normal
// SUPPORTED STATIC PDO FETCH MODE VARIABLES
define('PDO_FETCH_ASSOC', 2); // such mysql_fetch_assoc
define('PDO_FETCH_NUM', 3); // such mysql_fetch_row
define('PDO_FETCH_BOTH', 4); // such mysql_fetch_array
define('PDO_FETCH_OBJ', 5); // such mysql_fetch_object
// UNSUPPORTED STATIC PDO FETCH MODE VARIABLES
define('PDO_FETCH_LAZY', 1); // usable but not supported, default is PDO_FETCH_BOTH and will be used
define('PDO_FETCH_BOUND', 6); // usable but not supported, default is PDO_FETCH_BOTH and will be used

忘れた頃に移行すると忘れてそう。結構いいかと思ったがなかなか面倒だ。
やっぱりPHP5でやるかな。