我正在尝试理解有关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('John', 'Doe');
$qn = new Question('What is your name?', $author);
$authorName = $qn->getAuthor();
print_r($authorName);返回给我以下内容:-
Author Object
(
[firstName:Author:private] => John
[lastName:Author:private] => Doe
)如何访问Author对象的值,即。firstName和lastName?
我尝试过$authorName->firstName,但这会使我返回一个错误
Cannot access private property Author::$firstName就像我说的,我只是尝试使用这个代码示例来使用依赖注入来获取我的头脑。我知道,通过在Author类中将$firstName类型更改为public,可以使其工作,但如果代码示例不正确或检索值的代码不正确,仍然需要任何PHP专家澄清。
谢谢,非常感谢你的反馈。
发布于 2015-03-05 02:51:49
这里的范例是,对于每个“私有”字段,有一个相应的“公共”函数来获得该字段。这就是如何从$qn对象中获取作者的方法:通过如此类似地调用$qn->getAuthor(),因为这样可以为您提供一个作者,并且您想要作者的名字,您可以使用
$author = $qn->getAuthor();
$firstname = $author->getFirstName();依赖项注入只是要求在提出问题时,传递给构造函数的第二个参数必须是Author类型。
发布于 2015-03-05 03:02:53
如果要访问问题类中的作者名称,可以修改getAuthor函数:
类问题getAuthor()
public function getAuthor() {
// call the author class then call the method you want to retreive
// call the author info by using any proterties inside the
//author class ex. $this->author->getFirstName()
return $this->author->getFirstName().' '.$this->author->getLastName();
}通过调用调用
$authorName = $qn->getAuthor();
print_r($authorName);
// you will get John Doehttps://stackoverflow.com/questions/28869068
复制相似问题