无法访问传递的实例对象 class

Can not access passing instance object class

当我在某个方法中捕获 class 时出现错误。当我调用 anotherMethod 时,出现了这样的错误。

查看下面的代码。我该如何解决这个问题,请帮忙。

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 时,它给出了正确的 output.See 下面的代码。

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

您调用函数 anotherMethod 时没有任何参数。在您的 class 中,该方法是用参数定义的。所以你必须用参数 $php

调用另一个方法
echo $java->anotherMethod($php);

您收到错误是因为您将 PHP 对象传递给 Java 构造函数,但 PHP 对象是 anotherMethod 的依赖项。如下所示更改 Java class 以根据需要工作:

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();