mocapapa
mocap****@pugpu*****
2008年 8月 13日 (水) 13:25:07 JST
Kenjiさん On Wed, 13 Aug 2008 13:09:48 +0900 mocapapa <mocap****@pugpu*****> wrote: > > 原因は、それですね。 > > > > Framework がコントローラですと、$this は CodeIgniterスーパーオブジェクトに > > なるかと思います。 > > > > ライブラリなら、Controllerクラスを継承してはいけないですね。 > > アプリをライブラリ化した際に一旦はextendsをやめたのですが、別のメソッド > がundefinedか何かになったかで直すのが面倒でextends Controllerしてしまい > ました。これをはずすように修正します。 やや意外でしたが、extends Controllerのみを削除しただけで今度は動作しまし た。 > ということは、 > > function(&variable) > > ではなく、 > > variable = function() > > のように受けとるほうが良いということですかね。具体的なコードは、現在、以 > 下のようになっています。 > > class Application extends Controller { > var $version = '$Id$'; > var $pseudo_variables = array ( > : > ); > > function index() { > : > $this->_set_pseudo_variables(&$data); $data = $this->_set_pseudo_variables($data); と$dataで受け取るように修正し、 > : > } > : > > function _set_pseudo_variables($data) { > $data = array_merge($data, $this->pseudo_variables); > $data['base_url'] = base_url(); > $data['version'] = $this->version; return $data; > } を追加し、動作しました。 擬似変数をセットする関数を設けたのは、$data = array()の要素にスタティッ クにbase_url()を書くとエラーになるためですが、このようなやり方しかないの でしょうか。 ともかくライブラリ化することができましたので、お礼申し上げます。 -- モカぱぱ <mocap****@pugpu*****>