【发布时间】:2023-03-12 18:46:01
【问题描述】:
我正在学习 php 中的依赖注入,我认为我缺少一些东西。
我创建了两个类,Author 和 Article:
class Author{
private $firstName;
private $lastName;
public function __construct($firstName, $lastName){
$this->firstName = $firstName;
$this->lastName = $lastName;
}
public function getName(){
return $this->firstName . " " . $this->lastName;
}
}
class Article{
private $author;
private $content;
public function __construct(Author $author, $content){
$this->author = $author;
$this->content = $content;
}
public function getContent(){
return $this->content;
}
}
然后,在我的索引页面上,我实例化了我的 Article 类并注入了我的 Author 类:
require "Classes.php";
$Article = new Article( new Author("Chris", "Schmitz"), "this is the content of my article");
print_r($Article);
按预期打印出我的对象:
Article Object ( [author:Article:private] => Author Object ( [firstName:Author:private] => Chris [lastName:Author:private] => Schmitz ) [content:Article:private] => this is the content of my article )
这一切都说得通,但是当我从 Author 类调用公共方法 getName() 时出现错误:
echo $Article->author->getName();
// produces php error: PHP Fatal error: Cannot access private property Article::$author
如果我将一个对象注入另一个对象,我是否应该能够访问注入对象的公共方法?我是否误解了注射的预期效果?我是不是设置错了?
【问题讨论】:
标签: php class dependency-injection