2008-06-08

Top > Weblog > 2008-06-08

ついに lsx, includex, contentsx をフルスクラッチから書き直しました。 今まではプラグインを独立してインストール、使用できるように各プラグインに同じ関数を別々に何度も書いていましたが、 さすがに限界になってきたので、それらの関数をまとめたファイルを作成し、それぞれから取り込むするようにしました。 また、lsx など各プラグインで実装していた機能を、より汎用的な形に分離することで、 taglist.inc.php, popularx.inc.php などで同様な機能を使用しやすくなるようにしました(が、まだそこまでは手が出せていません)

ダウンロード (sourceforge.jp)

テスト版ということでそれぞれ名前の x を次の y にしてあります(lsy, includey, contentsy)。 仕様は基本的には以前と同じです。完成の際には lsx, includex, contentsx に戻すつもりでいます。 まだあまりテストしてません。ベータ版というより、ガンマ、いやオメガ版ぐらいのような気がします。 テスト用に contentsy のキャッシュファイルは CACHE_DIR/*.toc にしてあります。これはこのまま行くかもしれません。

具体的には、以下のディレクトリ、ファイルを作成しました。

ちなみに、クラスの命名ルールとして DirectoryDirectoryFilename となるようにしました。例えば option.class.php なら PluginSonotsOption、lsy.inc.php なら PluginLsy です。 ただ特例として sonots.class.php 内の関数は頻繁に使用するため sonots と省略させてもらいました。 皆さんも plugin/ハンドル/自作ライブラリ とファイルを置き、PluginHandleClass のようなクラス名にすれば被らないですむかもしれない、と勝手に思っていますが、勝手に思っているだけです(以前書いたもの?)。 また、自分で PHP4 をサポートする関数群を sonots.class.php に書くのにうんざりしたので、PHP_Compat をとりあえずとりこんでおくことにしました。 依存関係の図を書いたほうが良いと思うので、UML 図でも描きたいのですが、画像を作るのが面倒くさいのでどうしようかなと思っています。

あとがき:

PukiWiki の機能を使用しない関数については UnitTest で充分に確認をテストしてある(と思う)のですが、 PukiWIkiの機能を使用する関数の UnitTest ができないために、テストが難航しております。 昔も UnitTestForPlugins でやったのですが、PukiWiki 設定、関数を取り込むのに必要な部分だけを切り出したファイルを作り出すのが非常に面倒くさいです。 前回のように一度作っても、PukiWiki の変更によりまた一からやり直しとなるのは避けたいので、なんらかの仕組み、ルールを作りたい所ですが、それが非常に難しいのでどうしたものかと思っています。 また、PukiWiki 関数はファイルシステム上のファイルにアクセスするため、テスト用のデータを用意するのがまた難しいです。 一旦作ったとしても、後でまた UnitTest をする際にそのテストデータを利用できるように、復元する手段を作っておかないといけない気がします。面倒くさい。 UnitTest はこういう作り直しの時にこれ以上はない最高の成果を発揮するのですが、それを使用できていないというのが辛い。