2

これは私の 2 番目の質問です。とにかく、別のクラスから非静的メソッドを呼び出す方法について、OOP には基本的な問題があります。例: ファイル A.class.php に A という名前のクラスがあります。

class A {

    public function doSomething(){
     //doing something.
    }

}

別のファイル B.class.php の B という名前の 2 番目のクラス

require_once 'A.class.php';

class B {

    //Call the method doSomething() from  the class A.

}

これでクリアになったと思います。方法 : クラス A からメソッド doSomething() を呼び出しますか?

4

5 に答える 5

4

クラス B には、メソッドを呼び出すためにクラス A のオブジェクトが必要です。

class B {
    public function doStuff() {
        $a = new A();
        $a->doSomething();
    }
}

または、B の外部で A のインスタンスを作成し、それを B のコンストラクターに渡して、それへのグローバル参照を作成できます (または、選択した個々のメソッドに渡します)。

class B {
    private $a = null;
    public function __construct($a) {
        $this->a = $a;
    }
    public function doStuff() {
        $this->a->doSomething();
    }
}

$a = new A();
$b = new B($a);
于 2012-10-10T18:40:29.293 に答える
2

クラス A を B に注入して、B を A に依存させるのはどうでしょうか。これは依存性注入の最も原始的な形式です。

class A 
{    
  public function doSomething()
  {
    //doing something.
  }
}

class B 
{
  private $a;

  public function __construct( A $a )
  {
     $this->a = $a;
  }

  //Call the method doSomething() from  the class A.
  public function SomeFunction()
  {
    $this->a->doSomething();
  }  
}

これは次のように構成されます。

$a = new A();
$b = new B( $a );
于 2012-10-10T18:42:09.523 に答える
0

クラス A のオブジェクトをインスタンス化する必要があります。これは、クラス B のメソッド内でのみ実行できます。

  class B{
     public function doSomethingWithA(){
          $a = new A();
          return $a->doSomething();
      }

  }
于 2012-10-10T18:39:55.950 に答える
0
class B {

    public function __construct()
    {
      $a = new A;
      $a->doSomething();
    }


}
于 2012-10-10T18:40:41.057 に答える