2016-10-11 14 views
1

メソッドでクラスをキャッチするとエラーが発生します。 anotherMethodを呼び出すと、このようなエラーが出ます。 enter image description here渡すインスタンスオブジェクトクラスにアクセスできない

次のコードを参照してください。どうすればこの問題を解決できますか?

class Java{ 

    function anotherMethod(Php $phpAccess){ 
     $phpAccess->framework(); 
     $phpAccess->cms(); 
    } 

} 


class Php{ 

    public function framework() 
    { 
     echo "Laravel is a popular php framework. </br>"; 
    } 

    public function cms() 
    { 
     echo "WordPress is popular php cms. </br>"; 
    } 

} 

$php = new Php(); 
$java = new Java($php); 
echo $java->anotherMethod(); 

しかし、コンストラクタでクラスをキャッチすると、正しい出力が得られます。次のコードをご覧ください。

class Java{ 
    function __construct(Php $phpAccess){ 
    $phpAccess->framework(); 
    $phpAccess->cms(); 
    } 
} 

答えて

2

パラメータ$ PHPでanotherMethodを呼び出す必要があります。

class Java 
{ 
    private $phpAccess; 

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

    public function anotherMethod() 
    { 
     $this->phpAccess->framework(); 
     $this->phpAccess->cms(); 
    } 
} 

class Php 
{ 
    public function framework() 
    { 
     echo "Laravel is a popular php framework. </br>"; 
    } 

    public function cms() 
    { 
     echo "WordPress is popular php cms. </br>"; 
    } 
} 

$php = new Php(); 
$java = new Java($php); 
$java->anotherMethod(); 
+1

それは素晴らしいです....ありがとう –

1

パラメータanotherMethodをパラメータなしで呼び出します。あなたのクラスでは、このメソッドはWITHパラメータとして定義されています。だから、あなたはJavaのコンストラクタにPHPオブジェクトを渡しているが、PHPのオブジェクトではなくanotherMethodの依存であるため、あなたがエラーを取得している


echo $java->anotherMethod($php); 
+0

Javaクラスを次のように変更しても問題ありませんが、少し説明できますか? –

関連する問題