用戶填寫表單並提交它。基於輸入,對象Organization
被水合。我想從實際對象中分離與數據庫的通信。兩個相互依賴的類的構造函數注入
我想創建一個OrganizationMapper
,它擁有數據庫通信(保存,刪除...)的方法。組織類將通過構造函數獲得OrganizationMapper
。
然而,對於這些類的定義,我不能實例化類,因爲它們相互依賴。
我該怎樣才能將數據庫通訊從Organization
中分離出來並放入OrganizationMapper
?
class Organization
{
protected $id;
protected $name;
... other properties ...
public function __construct(OrganizationMapper $mapper)
{
$this->mapper = $mapper;
}
public function getId() {...}
public function setId($id) {...}
... other methods ...
public function saveToDb()
{
$this->mapper->save($this);
}
的OrganizationMapper
是
class OrganizationMapper
{
public function __construct(Organization $organization)
{
$this->organization = $organization
}
... other methods
public function save($organization)
{... the code to use the methods of Organization class to save the data to the database...}
}
謝謝!你提到我不需要mapper類中的構造函數。什麼時候有構造函數是好的?當映射程序有其他使用「組織」對象的方法? –