Senna バインディングを作ってみた

php_senna-0.0.1devel.tgz
5時間ぐらいで一気に書いた。反省はしていない。
例によって雛形は CodeGen_PECL で作成。
ベーシック API のみ実装で、ほとんど C API のまんま。テストやドキュメントの類は皆無。
公式のAPI解説と同梱の examples/sen-test.php で勘弁を。


configure でチェックさぼってるけど sen_info() のため、Senna バージョン 1.0.2 以降が必要です。1.0.4 を推奨。


アドバンスト API に関してはオブジェクト指向 API の実装と一緒にやる予定。いつやるかは未定。1.1.0 より後なのは確定。
C API そっくりそのまんまじゃなくて、もうちょっと今風の PHP らしくするかも。
OO 的には SPL 使って SenRecords クラスでは Iterator (もしくは IteratorAggergate) と Countable を implement したり。


追記:
php_senna-0.0.2devel.tgz
SEN_INDEX_MORPH_ANALYSE 定数を追加。
examples に pure PHP で書いた OO-API の習作とその使用例を追加。
SenIndex::upd() とか SenIndex::sel() とかいうメソッド名は自分でもちょっとどうかと思ったりするわけだが、アドバンスト API に sen_index_update(), sen_index_select() という、ベーシック API の関数名と紛らわしいのがあるので仕方ない (ということにする)。
ちなみに id:tasukuchan が作っておられる公式PHPバインディングが完成したら、このバインディングいらない子になります。


さらに追記:
PEAR::CodeGen_PECLでPHP拡張を書いてみよう(その1) - グニャラくんのグニャグニャ備忘録@はてな をごっそり見落としていた件。
かぶりまくりです。超はずかしい。