mocap****@pugpu*****
mocap****@pugpu*****
2008年 8月 13日 (水) 11:12:02 JST
kunitsujiさん On Tue, 12 Aug 2008 12:17:42 +0900 kunitsuji <tsuji****@m-s*****> wrote: > kunitsujiです。 > > もかぱぱさん。こんにちは。 お返事が遅れてすみません。 > 下記みましたが、あくまでもPHPのバージョンその他基本的に全く同じ状態で > なおかつCIのソース、設定情報も同じということですよね? > 唯一違うのが > >A(社内): allow_call_time_pass_reference = Off > >B(公開): allow_call_time_pass_reference = On > ということでまちがいないですか? 他にも微妙に違っていたのですが、これが目につきました。 > // 擬似変数の設定 > > $this->_set_pseudo_variables(&$data); > ここで引数が参照私になっていますよね? > これ普通に渡してみてどうですか?それでも > appli中の$this->parserはちがいがでますかね。 このメソッド中で、parserに渡すデータを設定しているので、値渡しにしてしま うとデータが返りません。実際に擬似変数に値が入らなくなります。 > PHPのバージョンは5ですよね? すみません、phpのバージョンを書き忘れていました。 A(社内): PHP 5.2.6 B(公開): PHP 4.3.10-22 と大分違いました。 ところで、調べていたら以下のことがわかりました。オリジナルの $this->load->library('framework'); $this->load->library('parser'); この順を入れ替えたら動作しました。また、 $this->load->library('framework'); $this->load->library('parser'); : $this->framework->parser->parse($view, $data); としたら動作しました。どうも $this->load->library('framework'); この処理の後の名前空間に問題があるようです。つまり、$thisはこのアプリケー ションのクラスでなくてはならないのにframeworkを指しているようです。なの で、ロード順を入れ替えてparserを先にロードすると本来の $this->parser->parse($view, $data); は動作するし、元の順のまま、 $CI = &get_instance(); $CI->parser->parse($view, $data); は、$CIがframeworkになるため動作するようです。Frameworkクラスは class Framework extends Controller { と定義しているのですが、まずいでしょうか? -- モカぱぱ <mocap****@pugpu*****>