Базовый PHP-объектно-ориентированный интродукция и инжекция зависимостей

Я пытаюсь научиться использовать инъекцию зависимостей, но у меня возникают проблемы с ее использованием. Я понимаю, что происходит с этими двумя классами здесь, однако, когда я использую их, я делаю что-то неправильно.

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(); 

Я хочу, чтобы он выдал «Микки» и «какой это день?», Но вместо этого я получаю следующую ошибку.

 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'); ?

Спасибо за любые идеи.

Related of "Базовый PHP-объектно-ориентированный интродукция и инжекция зависимостей"

ваше 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 , и внутри получателя вы вызываете $this->firstName заглавными.