基本的PHP面向对象实例化和依赖注入


Basic PHP Object Oriented Instantiation and Dependency Injection

我正在尝试学习使用依赖项注入,但在使用它时遇到了问题。我理解这里的两个类发生了什么,但是当我使用它们时,我做错了什么。

class Author
{
private $firstname;
private $lastname;
public function __construct($firstname, $lastname)
{
    $this->firstName = $firstName;
    $this->lastName = $lastName;
}
public function getFirstName()
{
    return $this->firstName;
}
public function getLastName()
{
    return $this->lastName;
}
}
class Question
{
private $author;
private $question; 
public function __construct($question, Author $author)
{
    $this->author = $author;
    $this->question = $question;
}
public function getAuthor()
{
    return $this->author;
}
public function getQuestion()
{
    return $this->question;
}
}

好的,有两个基本类使用依赖注入。我理解所有这些,但如果我想使用它们。我试过这个,但我得到了一个错误。

$author = new Author('Mickey', 'Mouse');
$author->getFirstName();
$question = new Question('what day is it?', $author);
$question->getQuestion(); 

我希望它输出"米奇"answers"今天是星期几?",但我得到了以下错误。

Undefined variable: firstName in /var/www/OOP/dependency-injection/example1.php on line 12
Undefined variable: lastName in /var/www/OOP/dependency-injection/example1.php on line 13

为什么我会出现此错误?我想我在这里声明了变量$author = new Author('Mickey', 'Mouse');

感谢您的真知灼见。

您的firstnamefirstNameAuthor类中不匹配

public function __construct($firstname, $lastname)
{
    $this->firstName = $firstName;
    $this->lastName = $lastName;
}

应该是

private $firstName;
private $lastName;
public function __construct($firstName, $lastName)
    {
        $this->firstName = $firstName;
        $this->lastName = $lastName;
    }

您已经声明了private $firstname,在getter中,您将调用大写的$this->firstName