-1
我正在學習依賴注入在PHP中,我認爲有些東西我錯過了。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;
}
}
然後,我的索引頁,我實例化我的文章類,並注入我的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)
這一切都合情合理,b UT當我去從我Author
類調用公共方法getName()
我得到一個錯誤:
echo $Article->author->getName();
// produces php error: PHP Fatal error: Cannot access private property Article::$author
如果我注射一個對象到另一個,我不應該能夠訪問被注入的對象的公共方法?我誤解了預計注射會如何工作?我把它設置錯了嗎?
是的,但是這將打破封裝原則。添加一個簡單的'getAuthor()'方法會更明顯,並且可以保留類中成員的封裝。 –
@HalimQarroum非常真實。 –
@GeorgeBrighton:啊,* facepalm *。如果它是一條蛇,它會咬我的臉。感謝您指出了這一點。 –