plugin_<プラグイン名>_init が複数回呼ばれている

メッセージ

plugin_<プラグイン名>_init 関数群は pukiwiki 一度の実行(セッション)につき、それぞれ一度だけ実行されるのが仕様だと思うのですが、現在は各プラグインが呼ばれるごとにそれぞれ毎回実行されています。

調べた所 cvs-raw:lib/plugin.php?r1=1.1&r2=1.2 の時点で array_key_exists が isset に変更され、NULL が値になった際の挙動が変わってしまっています。 これは BugTrack/779 クリンナップのまとめ array_key_exists() => isset() のところで NULL 値が格納された場合を見逃して修正してしまったのではないかと思います。

元に戻す修正パッチです。

--- org.orig/lib/plugin.php     2005-07-03 10:16:23.000000000 -0400
+++ org.dev/lib/plugin.php      2007-06-15 02:40:09.937500000 -0400
@@ -72,7 +72,7 @@
 {
        static $checked = array();

-       if (isset($checked[$name])) return $checked[$name];
+       if (array_key_exists($name, $checked)) return $checked[$name];

        $func = 'plugin_' . $name . '_init';
        if (function_exists($func)) {


*1 is_set() にこだわる路線で static 変数 $positive, $negative を使い分ける案も考えましたが、冗長でした

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-06-24 (日) 23:12:03
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.219 sec.

SourceForge