• ベストアンサー

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などでもかまいません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

A_objの中にB_objを設定するとか。 class A {  var $_logHandler = null;  function setLogHandler($handler) {   $this->_logHandler = $handler;  }  function query() {   ;//query.   $this->_handler->putLog();  } }

amountainblast
質問者

お礼

回答ありがとうございます。 実現できました。 こんな方法もあったんですね。 助かりました。 これだと今後クラスファイルが増えても対応できそうですね。 どうも、ありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

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; ?>

amountainblast
質問者

お礼

回答ありがとうございます。 こんな方法もあったんですね。参考になりました。 でもやりたいのはクラスAの中でクラスBのメソッドを使用したいので、 この方法だとちょっと違うようです。 ありがとうございました。

関連するQ&A