2

これは非常に基本的なPHPの質問です。file1、file2、file3の3つのファイルがあるとします。

file1で、Objectというクラスを宣言します。file2には、Objectをインスタンス化し、$ objectと呼び、このメソッドMethodを呼び出すメソッドがあります。

file2では、このメソッドは次のようになります。

public function Method(){
$object = new Object;
...
require_once(file3);
$anotherobject = new AnotherObject;
$anotherobject->method();

}

最後に、ファイル3で別のAnotherObjectを宣言します。したがって、file3にメソッド'method'がある場合、$ objectのプロパティを直接参照できますか、それともObjectの静的メソッドにアクセスできますか?

4

2 に答える 2

10

これは、まともなOOpをプログラムする方法ではありません。各クラスに独自のファイルを与えます。私が理解しているように、クラスを含む3つのファイルがあり、インスタンス化されたオブジェクトを使用したいと考えています。依存性注入を使用して、相互に依存するクラスを構築します。

例:

file1.php

class Object
{
   public function SomeMethod()
   {
      // do stuff
   }
}

file2.phpは、インスタンス化されたオブジェクトを使用します。

class OtherObject
{
   private $object;

   public function __construct(Object $object)
   {
      $this->object = $object;
   }

   // now use any public method on object
   public AMethod()
   {
      $this->object->SomeMethod();
   }
}

file3.phpは、複数のインスタンス化されたオブジェクトを使用します。

class ComplexObject
{
   private $object;
   private $otherobject;

   public function __construct(Object $object, OtherObject $otherobject)
   {
      $this->object = $object;
      $this->otherobject = $otherobject;
   }
}

これらすべてをブートストラップファイルまたはある種のプログラムファイルにまとめます。

program.php

// with no autoloader present:
include_once 'file1.php';
include_once 'file2.php';
include_once 'file3.php';

$object = new Object();
$otherobject = new OtherObject( $object );

$complexobject = new ComplexObject( $object, $otherobject );
于 2012-10-18T14:51:59.347 に答える
1

もちろん、その範囲は$object方法に限定されます。ファイル3はメソッドから呼び出されるので、を使用する場合は「はい」と思いますinclude()。ただし、メソッド内から使用require_once()すると、file3が以前に他の場所に含まれていて、メソッド内から含まれていない場合に示されているメソッドの変数を利用できない可能性について、他の質問をすることになります。

于 2012-10-18T14:52:25.847 に答える