んー、たしかに、staticの使い方がおかしいみたいです
と思ったのですが
Quote:
100%の確証が持てないのが XOOPS2 の恐ろしいところ
鋭い、
どうもphpバージョン違いとかサーバー違いの実動作の検証が必要そうです
というのが、
どこかで聞いたと覚えがあるけどと思い、
過去のトラッカーを探してみました
CVS
http://xoops.cvs.sourceforge.net/xoops/xoops2/kernel/module.php?r1=1.11.2.1&r2=1.11.2.2で
たぶん xoops2.0.9からかな?
「モジュールハンドラのキャシュが効いてない」
のクレームに対して、
static を宣言することで直ったかのように書いているのですが?
なぜ、
もともとが
$this->_cachedModule_mid
で維持しようとした
だけど前はキャシュ動作が出来ていないとバグトラッカーに報告がある
phppp (#1044971)さんと、mithyt2 (#989462)さんですね
ソースを見る限り、今見ると原因は謎に思えます
今のphpマニュアルを見ると
&get
と
&getByDirname
に
でスコープの違う
static
になるので
それぞれに
&get
と
&getByDirname
で、別のものを見ていることになるので
(もしかして、前はスコープは?一つだった?)
staticでないと維持できないという実状があるのなら?
staticに維持するところを、別関数一つに
インスタンスの確認とセットをまとめるとか?
でも
たまたま今日そのあたりphpマニュアル見てたら
http://jp.php.net/manual/ja/language.variables.scope .別の問題ですが
phpマニュアルに
「PHP4を駆動するZend Engine 1では
static変数にリファレンスの値は保持できない」
でサーバーの違いも考慮が必要かと
(これは、いつ追加されたのかな?
Zend Engine 1では意図せぬ動きをするらしいと
書いてるから、んーそうなのでしょう)