Я пытаюсь научиться использовать инъекцию зависимостей, но у меня возникают проблемы с ее использованием. Я понимаю, что происходит с этими двумя классами здесь, однако, когда я использую их, я делаю что-то неправильно.
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');
?
Спасибо за любые идеи.
ваше 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
заглавными.