[PHP-users 30862] Re: SQLiteDatabasekクラスについて

TAKAGI Masahiro matakagi @ osk2.3web.ne.jp
2006年 12月 2日 (土) 22:28:40 JST


高木です。

At Sat, 2 Dec 2006 17:44:44 +0900,
yusuke ito wrote:
> 
> 実はSQLiteDatabaseクラスはsqlite_*な関数を使って実現しているんだよ!
> という証拠が見つかれば迷わずsqlite_*を使うのですが
> (その方がパフォーマンスがよいでしょうから)
> PHP-5.2のソースツリーをgrepしても「SQLiteDatabase」という文字列を
> 見つけられずその辺どうやって実装しているのか、わかりませんでした。
> (ベンチマークとれば?と言われるとアレですが、ソースから根拠を得たい)
> 
> 私の探し方が根本的に間違っているんでしょうか。
> SQLiteDatabaseクラスはソース中のどこでどのように定義されているのか、
> どなたか解説いただけませんでしょうか…
> 
1. php-5.2.0/ext/sqlite/sqlite.c:1033:PHP_MINIT_FUNCTION(sqlite)
2. php-5.2.0/ext/sqlite/sqlite.c:771:#define REGISTER_SQLITE_CLASS(name, c_name, parent) \
3. php-5.2.0/Zend/zend_API.h:124:#define INIT_CLASS_ENTRY(class_container, class_name, functions) INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, NULL, NULL, NULL)

あたりを順にたどっていけばいいのではないでしょうか。
INIT_CLASS_ENTRY で grep してみると、それっぽいエントリがたくさん見つ
かります。
# ほんとはもっと突っ込んで調べたかったのですが、ギブアップ……。

あとは、http://netevil.org/node.php?nid=915 で公開されている PDF
(http://netevil.org/talks/furlong-golemon-extending-php.pdf)
の 65 ページ目とか、http://www.samspublishing.com/title/067232704X
あたりが参考になりそうです。

-- 
高木 正弘 mailto:matakagi @ osk2.3web.ne.jp


PHP-users メーリングリストの案内