- ベストアンサー
2つのクラスファイルの使用方法
こんにちわ。PHP4.3 PHP5でのクラスについての質問です。 A.cls SQL関連のクラス(検索や登録に使用) B.cls LOG関連のクラス(SQLエラーやページ遷移時に使用) C.php 処理のページ と3つのファイルを作りました。 C.phpでA.clsとb.clsをrequireしてnewで各オブジェクト(A_obj B_obj)を作成します。 A.cls内でDB接続が失敗したり、SQLエラーがあった時に B.clsのメソッドを使用してログを書き出そうとしています。 今はA.cls内の各メソッドでB_objをglobeで呼び出すか引数で渡すかしています。 ここから質問なのですが、 c.phpで作成したB.clsのオブジェクトをA.cls内で使用しようと思えば A.clsの各メソッドでglobeするか引数で渡すかしか方法がないのでしょうか? 各clsファイルの機能がぜんぜん違うので継承は考えていません。 あいまいな質問で申し訳ないのですが、globe、引数以外で方法がありましたら、ご教授お願いします。 PHPのバージョンは4のみOKや5のみOKなどでもかまいません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
A_objの中にB_objを設定するとか。 class A { var $_logHandler = null; function setLogHandler($handler) { $this->_logHandler = $handler; } function query() { ;//query. $this->_handler->putLog(); } }
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
php4でしたらコンストラクタで、a,bを別のオブジェクトとして読み込んじゃったらどうですか? //a.cls <? class a_class{ function print_hoge(){ print "hoge"; } } ?> //b.cls <? class b_class{ function print_fuga(){ print "fuga"; } } ?> //c.php <?php require_once "a.cls"; require_once "b.cls"; class c{ function c(){ $this->a=new a_class; $this->b=new b_class; $this->a->print_hoge(); $this->b->print_fuga(); } } new c; ?>
お礼
回答ありがとうございます。 こんな方法もあったんですね。参考になりました。 でもやりたいのはクラスAの中でクラスBのメソッドを使用したいので、 この方法だとちょっと違うようです。 ありがとうございました。
お礼
回答ありがとうございます。 実現できました。 こんな方法もあったんですね。 助かりました。 これだと今後クラスファイルが増えても対応できそうですね。 どうも、ありがとうございました。