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;
}
}
类作者被注入到Question类的构造函数中我是否正确?但如何调用Question类来获取作者的姓名?
$question = new Question('What is PHP', 'Adam');
$question->getFirstname;
像这样?我假设Question类继承了Author类,所以Question的实例可以使用Author Class的功能吗?
答案 0 :(得分:2)
您可以创建一个新方法:
class Question
{
// ...
function getAuthorFirstname()
{
return $this->author->getFirstname();
}
}
$question = new Question(.., new Author(..., ...));
echo $question->getAuthorFirstname();
或者,如果你真的不关心Law of Demeter或认为它不适用:
$question = new Question(.., new Author(..., ...));
echo $question->getAuthor()->getFirstname();
最终,所有这些都归结为在信息隐藏和实用主义之间取得平衡。
答案 1 :(得分:2)
简单
echo $question->getAuthor()->getFirstName();
如果有帮助的话,可以这样想想
$author = $question->getAuthor();
echo $author->getFirstName();
另请注意,您无法使用字符串" Adam"构建Question
,您需要传递Author
的实例
$question = new Question('What is PHP', new Author('Adam', 'Lastname'));