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

时间:2016-10-11 13:37:29

标签: php instance

当我在一个方法中捕获类时,我收到错误。当我打电话给另一个方法时,我得到了这样的错误。 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 个答案:

答案 0 :(得分:2)

您收到错误是因为您将PHP对象传递给Java构造函数,但PHP对象是anotherMethod的依赖项。按以下方式更改Java类以使其正常工作:

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 paramater。所以你必须使用参数$ php

调用anotherMethod
echo $java->anotherMethod($php);