首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP依赖注入

PHP依赖注入
EN

Stack Overflow用户
提问于 2015-03-05 02:39:33
回答 2查看 144关注 0票数 1

我正在尝试理解有关PHP依赖性的教程。以下是示例代码:-

代码语言:javascript
复制
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;
    }
}

为了了解它的工作原理,我添加了以下代码:

代码语言:javascript
复制
$author = new Author('John', 'Doe');
$qn = new Question('What is your name?', $author);
$authorName = $qn->getAuthor();
print_r($authorName);

返回给我以下内容:-

代码语言:javascript
复制
Author Object
(
    [firstName:Author:private] => John
    [lastName:Author:private] => Doe
)

如何访问Author对象的值,即。firstName和lastName?

我尝试过$authorName->firstName,但这会使我返回一个错误

代码语言:javascript
复制
Cannot access private property Author::$firstName

就像我说的,我只是尝试使用这个代码示例来使用依赖注入来获取我的头脑。我知道,通过在Author类中将$firstName类型更改为public,可以使其工作,但如果代码示例不正确或检索值的代码不正确,仍然需要任何PHP专家澄清。

谢谢,非常感谢你的反馈。

EN

回答 2

Stack Overflow用户

发布于 2015-03-05 02:51:49

这里的范例是,对于每个“私有”字段,有一个相应的“公共”函数来获得该字段。这就是如何从$qn对象中获取作者的方法:通过如此类似地调用$qn->getAuthor(),因为这样可以为您提供一个作者,并且您想要作者的名字,您可以使用

代码语言:javascript
复制
$author = $qn->getAuthor();
$firstname = $author->getFirstName();

依赖项注入只是要求在提出问题时,传递给构造函数的第二个参数必须是Author类型。

票数 0
EN

Stack Overflow用户

发布于 2015-03-05 03:02:53

如果要访问问题类中的作者名称,可以修改getAuthor函数:

类问题getAuthor()

代码语言:javascript
复制
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();
}

通过调用调用

代码语言:javascript
复制
$authorName = $qn->getAuthor();
print_r($authorName);
// you will get John Doe
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28869068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档