我正在尝试学习使用依赖项注入,但在使用它时遇到了问题。我理解这里的两个类发生了什么,但是当我使用它们时,我做错了什么。
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');
?
感谢您的真知灼见。
您的firstname
和firstName
在Author
类中不匹配
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
。