[Codeigniter-users] 奇妙な点 (Re: CIの速度) (Re: 初めまして)

Back to archive index

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*****>




Codeigniter-users メーリングリストの案内
Back to archive index