質問箱/3513

カテゴリ
サマリpluginでメモリ上に変数を作りたい。
バージョン1.4.7
投稿者moramora?
状態完了
投稿日2006-10-14 (土) 23:33:56

質問

プラグイン呼び出し時の計算結果を 再呼び出し時にできるだけ高速に呼び出すため メモリ上に変数を格納したいと思ったのですが、 たとえば以下のように記述しても毎回同じ値しか 出力されません。 メモリ上に変数を格納するにはどのように 記述すればよいのでしょうか。

global $a;
$a = 1;
function plugin_a_convert()
{
  global $a;
  $a = $a + 1; //< 呼び出しごとにインクリメントされてほしい.
  return convert_html(print_r($a, true));
}

よろしくお願いします。

回答

  • まずはPHPの動作についての基本を学ばれるべきでしょう。また、これはPukiWikiではなくPHPについての問題なので、ここで質問するのは適当ではありません。続きはしかるべきコミュニティでどうぞ。 -- 2006-10-15 (日) 00:18:51
  • しょうもない質問でうっとうしいのはわかるんですが、せめてヒントだけでもほしかったです。。。ステートレスで動作するから無理なんですかね? -- 2006-10-15 (日) 01:08:59
  • あれ、だめでしたっけ?関数の外の部分を function plugin_a_init() 内に書くとか別ファイル(pukiwiki.ini.php) に書くとかするとどうなりますか?(めんどくさいので私は調査しません) -- 2006-10-15 (日) 05:04:43
  • static にしてみてはどうでしょうか :) -- teanan 2006-10-15 (日) 10:25:47
  • コメントありがとうございます!m(_ _)m しかし、plugin_a_initにglobal $aを記載する方法、pukiwiki.ini.phpに記載する方法、plubin_a_convert内で$aをstaticに変更する方法、set_plugin_messages()を利用する方法などを試してみたのですが、同じ結果でした。。。とりあえずうまい方法が見つかるまでファイルに書き出してしのぐことにします(>_<) -- moramora? 2006-10-15 (日) 13:47:12
  • 関数の外の部分を消して、こういうのではだめですか?
    function plugin_a_convert()
    {
      static $a = 0; // 最初は0 、でも直後でプラス1 するので表示は1 から
      $a = $a + 1;
      return convert_html(print_r($a, true));
    }
    コメントプラグインなどで、アンカーID が重ならないように、こんな感じの処理をしているんですが。 -- 2008-03-02 (日) 13:49:19
  • 上のが正解。PHP: 変数のスコープ や、既存のプラグインの処理を見てください。 -- 2009-03-08 (日) 22:57:57
    • 状態を「完了」にします。 -- 2009-03-08 (日) 22:57:57

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-03-08 (日) 22:57:57
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u6. HTML convert time: 0.232 sec.

OSDN