新エンジン

PukiWiki Adv.次期バージョンは、コアエンジンをすべて書きなおしてあります。改良というか別物になってます。前のバージョンや無印版、Plus!との互換性は、legacy.phpで行なっていますが完全なものではありません。Plusの拡張命令が使われたプラグインの一部は動作しない可能性があります。

とくに、ヘッダー周りの処理は逐次出力する実装から、バッファに貯めこんでから出力する方式に変えたため正常に動作しない場合があります。(pkwk_common_headers()など)

この新エンジンの最大の特徴は、オブジェクト指向でコードが書きなおされている点です。そして、原則的に読み込む処理はget書き込む処理はset、というようにGetter/Setterメソッドで関数名を書き換えています。このため、よりコーディングがしやすくなっています。例えば、ページに書き込む処理は、

page_write(ページ名,内容,タイムスタンプ更新フラグ);

でしたが、今後は

use PukiWiki\Factory;
~中略~
$wiki = Factory::Wiki(ページ名);
$wiki->set(内容,タイムスタンプ更新フラグ);

というようになります。一見ソースが長くなっているようにみえるかもしれませんが、旧方式では、実際はページの存在チェックなどをpage_writeの処理の前に入れなければならないため、一度慣れれば旧方式よりもパターン化されたプログラミングでプラグインの開発ができます。

オブジェクト指向化とは、プログラミングの簡易化という目的ですが、spl_autoloadという機能を用いて必要なコードを必要な時だけ読み込んで実行する設計にするというのも兼ねています。このため理論上旧バージョンよりも高速に動作し、特にapcを導入しているサーバーではより一層高い効果が期待出来ます。

最後に、キャッシュ処理の強化とPlus!で追加された機能の統合の強化があります。自動リンクやオートグロッサリ、InterWikiNameなどもキャッシュしているため処理が軽くなっています。


次期バージョンは、2.0とします。当初は1.1として開発し、legacy.phpで互換性をとってあるとはいえ、あまりにもAPIを書き変えたので1.0系を名乗るには問題が多すぎるというのが理由です。スキン互換性もありません。

アルファ版のリリースは、スキンの書き換えが終了次第行います。(たぶん、今週末?)