Php 从另一个类传递类或依赖项注入

Php 从另一个类传递类或依赖项注入,php,Php,我很难理解给定的代码以及依赖注入背后的原因。我有以下错误: 未捕获错误:调用C:\xampp\htdocs\OOP\Index.php中未定义的方法Question::getFullName():10堆栈跟踪:#0{main}在第10行的C:\xampp\htdocs\OOP\Index.php中抛出 即使我在构造函数中实例化了Author类的对象,只要我尝试使用getQuestion(),我就会在Question类中得到一个字符串 $question确实没有getFullName方法。类Aut

我很难理解给定的代码以及依赖注入背后的原因。我有以下错误:

未捕获错误:调用C:\xampp\htdocs\OOP\Index.php中未定义的方法Question::getFullName():10堆栈跟踪:#0{main}在第10行的C:\xampp\htdocs\OOP\Index.php中抛出

即使我在构造函数中实例化了
Author
类的对象,只要我尝试使用
getQuestion()
,我就会在
Question
类中得到一个字符串


$question确实没有getFullName方法。类Author中存在方法getFullName。在创建并“发送”到Question之后,当它被创建时,方法getFullName在类Question private$author属性中可用

但是,如果您想通过下面的代码获取Athor名称,您需要尝试

$question->getAuthor()->getFullName();
如果您这样做,您将再次出错,因为在问题->getAuthor中,您将返回$this,在本例中,这是一个问题对象。要从问题对象获取作者姓名,您应该执行以下操作:

  • 像这样修复getAuthor
  • 像这样在index.php中重新编写调用名称
  • echo$question->getAuthor()->getFullName()


    $question确实没有getFullName方法。类Author中存在方法getFullName。在创建并“发送”到Question之后,当它被创建时,方法getFullName在类Question private$author属性中可用

    但是,如果您想通过下面的代码获取Athor名称,您需要尝试

    $question->getAuthor()->getFullName();
    
    如果您这样做,您将再次出错,因为在问题->getAuthor中,您将返回$this,在本例中,这是一个问题对象。要从问题对象获取作者姓名,您应该执行以下操作:

  • 像这样修复getAuthor
  • 像这样在index.php中重新编写调用名称
  • echo$question->getAuthor()->getFullName()


    事实上,getAuthor可以只返回
    $this->author
    -其余的在这种情况下没有任何用处。我确信,在这种情况下,getAuthor方法通过程序规则提供保护方法。在其他情况下,像getAuthor和Setter这样的getter也提供了非常有用和安全的类方法和集中化属性管理。事实上-getAuthor可以只返回
    $this->author
    -其余的在这种情况下没有任何用处。我确信,在本例中,方法getAuthor提供了通过程序规则使用保护方法的操作。在其他情况下,像getAuthor和setter这样的getter也提供了非常有用和安全的类方法和集中化的属性管理。
    $question->getAuthor()->getFullName();
    
    public function getAuthor() 
    {
        $firstname = $this->author->getFirstName();
        $lastname = $this->author->getLastName();
        return $this->author;
    }