2016-10-19 11 views
-1

I持っても第三のクラスであるという特性がある第二のクラスであるプロパティを持つクラス、、:その結果、PHP:関連したクラスからメソッドにアクセスする方法を

$classOne = new ClassOne; 
$classOne->classTwo = new ClassTwo; 
$classOne->classTwo->classThree = new ClassThree; 

とし、I

$classOne->classTwo->classThree->someClassThreeMethod(); 

そして、何私がやろうとしているが、次のとおりです:これを行うことができます私はそうしようとするたびに

classThree { 
    someClassThreeMethod() { 
     $classOne->someMethod(); 
     // some more code 
    } 
} 

を、PHPは、私に語っFatal error: Uncaught Error: Call to a member function someMethod() on null in... global $classOnesomeClassThreeMethod)の設定を試してみましたが、動作しなかったので、$GLOBALS$classOneを試しました(ClassThreeの実装外のグローバルスコープでも動作しませんでした)。

最後に、関連付けられたクラス内からsomeMethodにアクセスするにはどうすればよいですか?

UPDATEは、私がこれまでに与えられた答えを続行する方法について良いアイデアを得たので、私は少し異なる質問に改質だ:どのように私はsomeClassThreeMethod内からアクセスできるように$classOneを設定するのですか?

+0

はあなたの呼び出し元のクラスでそのメソッドを含むクラスのオブジェクトを持っており、その*オブジェクトがそのメソッドを呼び出します*確認していることを確認してください。または継承を使用します。しかし、ここで試しているような方法を共有することはできません。 –

+0

あなたはちょうど拡張することができましたか? http://php.net/manual/en/keyword.extends.php – nogad

+0

@nogad私がやっていることから、継承はここには適用されません。とにかくありがとう! – LVilasBoas

答えて

0

あなたがすべきことは、新しいクラスを作成するときに、そのオブジェクトを引数として渡すことです。

class classTwo { 
    private $classOne; 

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

    public someClassTwoMethod() { 
     $this->classOne->someMethod(); 
    } 
} 

次に、あなたはどうしたら:

$classOne = new ClassOne; 
$classOne->classTwo = new classTwo($classOne); 
関連する問題