[Codeigniter-users] モデルクラス内での他のモデルクラスの利用について

Back to archive index

Kenji kenji****@club*****
2008年 6月 13日 (金) 07:00:07 JST


Kenji です。


On Fri, 13 Jun 2008 03:40:14 +0900
Yuta Sakurai <sakur****@gmail*****> wrote:

> 皆様、初めまして || こんにちは。
> 名市大で学生をしている、櫻井と申します。
> このMLには初めての投稿です。どうぞよろしくお願いします。

櫻井さん、こんにちは。

 
> 早速で申し訳ないのですが、質問させてください。
> 
> 現在、CodeIgniterでのモデル部分実装で詰まっています。
> ある一つのモデルクラスから、別のモデルクラスをロードして使いたいのですが、
> ロードしてもインスタンス化されず、利用することができません。

http://codeigniter.com/forums/viewthread/74671/
が、参考になるかと思います。

基本的には、設計を見直した方がいいと思います。 


> 以下にコード例を示します。
> =====ここから
> <?php
> class Alpha extends Model {
>   function Alpha() {
>     parent::Model();
> 
>     $this->load->database();
>   }
> 
>   function alpha_test() {
>     $this->load->model('beta', '', true);
> 
>     $this->beta->beta_test();
>   }
> }
> ?>
> =====ここまで
> 
> なお、modelsディレクトリ以下に、
>   alpha.php
>   beta.php
> の二つのモデルクラスファイルを入れています。
> 
> 別にController内でAlphaモデルをロードし、alpha_test()メソッドを
> 呼び出すと、
>   $this->beta->beta_test();
> の部分で、Undefined property: Alpha::$betaと言われます。
> XdebugでBetaモデルロード直後のAlphaインスタンス内を見たところ、
> 確かに$this->betaインスタンスは存在していませんでした。
> Betaクラスのロード自体は、エラーもなく問題ありません。
> 
> Controller内でBetaモデルをロードすると、もちろん問題なくロード後に
> 自動でインスタンス化され、利用できます。
> 
> モデル内で別のモデルをロードするのは、CodeIgniterでは想定していない
> ものなのでしょうか?
> それとも、他に方法があるのでしょうか?
> ご存知の方がいらっしゃったら、お教えいただけますでしょうか。
> (そもそも、そうすべき状況になってしまう僕の設計がまずいのかも)
>
> それでは、失礼します。
> 
> // CodeIgniter徹底入門、発売おめでとうございます。
> // PHP初心者の僕でも、環境構築を含めてCodeIgniterが
> // すぐに触れるようになる、とても素晴らしい本だと思います。
> // これからもリファレンスとして愛用させていただきます。
> 
> -- 
> 
> 名古屋市立大学大学院 経済学研究科
> 櫻井 雄大 (Y_Sakurai)
> mail: sakur****@gmail*****
> 
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users




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