Не удается получить доступ к проходящему классу объекта экземпляра

#php #instance

#php #экземпляр

Вопрос:

Когда я перехватываю класс в методе, я получаю сообщение об ошибке. Когда я вызываю 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 Java{
  function __construct(Php $phpAccess){
    $phpAccess->framework();
    $phpAccess->cms();
  }
}
  

Ответ №1:

Вы получаете ошибки, потому что вы передаете объект 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();
  

Ответ №2:

Вы вызываете функцию anotherMethod без какого-либо параметра. В вашем классе метод определяется С ПОМОЩЬЮ параметра. Поэтому вам нужно вызвать другой метод С параметром $php


 echo $java->anotherMethod($php);