Yuta Sakurai
sakur****@gmail*****
2008年 6月 13日 (金) 03:40:14 JST
皆様、初めまして || こんにちは。 名市大で学生をしている、櫻井と申します。 このMLには初めての投稿です。どうぞよろしくお願いします。 早速で申し訳ないのですが、質問させてください。 現在、CodeIgniterでのモデル部分実装で詰まっています。 ある一つのモデルクラスから、別のモデルクラスをロードして使いたいのですが、 ロードしてもインスタンス化されず、利用することができません。 以下にコード例を示します。 =====ここから <?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*****