kunitsuji
tsuji****@m-s*****
2008年 8月 12日 (火) 12:17:42 JST
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はちがいがでますかね。
PHPのバージョンは5ですよね?
>今回開発したCRUDフレームワーク(on CIフレームワーク)をライブラリ化してい
>て、動作はしたのですが一点奇妙な点に気づきました。
>
>まず、ホストはA(社内)とB(公開)があります。phpの設定において気づいたのは
>
>A(社内): allow_call_time_pass_reference = Off
>B(公開): allow_call_time_pass_reference = On
>
>の違いがあります。CRUDフレームワークをライブラリ化したので、ライブラリコー
>ド内の$thisは$CI = &getinstance()経由にしなければBでは動作しませんでした。
>一方Aでは動作してしまいました。
>
>次の点がもっと奇妙な点です。サンプルプログラム(呼び出し側のコード)におい
>て、デフォルト関数を
>
> function index() {
> // CRUDフレームワーク及びパーサをロード
> $this->load->library('framework');
> $this->load->library('parser');
> // 以下はCRUDフレームワークの設定
> $this->framework->table = $this->expense_table;
> $this->framework->tmpl['update_flag'] = false;
> $this->framework->tmpl['heading_translation_table'] = $this->tmpl
>['heading_translation_table'];
> // 表画面作成
> $data = $this->framework->crud_display('expense');
> // 擬似変数の設定
> $this->_set_pseudo_variables(&$data);
> // 画面出力
> $this->parser->parse($view, $data); <--------ここ
> }
>
>
>としましたが、動作しません。具体的には$this->parserがundefinedになります。
>このコードはsystem/application/controllersの下にあるれっきとしたアプリケー
>ションなのに、上記の一行を何故か
> $CI = &get_instance();
> $CI->parser->parse($view, $data);
>としなければ動作しませんでした。
>
>まとめると
>
> lib中の$this appli中の$this->parser
>---------------------------------------------------------
>A(社内): 動作してしまった $thisでは動作せず⇒$CIに書き換え
>B(公開): 動作せず⇒$CIに書き換え 動作した
>
>このように見るとB(公開)ホストは問題なく、A(社内)ホストの動作がなにかおか
>しいように思われますが何かおわかりになる方はいますでしょうか?なおCIの環
>境はコピーしており同一です。
>
>--
>モカぱぱ <mocap****@pugpu*****>
>
>_______________________________________________
>Codeigniter-users mailing list
>Codei****@lists*****
>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users