我想在代碼中更好地實現OOP和依賴注入,並遇到以下問題。依賴注入與多個數據庫調用
我到僱主和公司參與(與相應型號,映射器和數據庫表)的客戶提供服務:
class Service
{
protected $clientId;
protected $client;
protected $employerId;
protected $employer;
protected $companyId;
protected $company;
public function setClient(Client $client)
{
$this->client = $client;
}
public function setEmployer(Employer $client)
{
$this->employer = $employer;
}
public function setCompany(Company $company)
{
$this->company = $company;
}
// more
}
要得到服務對象我首先實例,它返回一個clientId服務對象來自數據庫。通過clientId,我實例化一個Client對象(並將其附加到服務),這涉及到再次訪問數據庫。僱主和公司一樣。
我可以從數據庫中一次性檢索服務,客戶端,僱主和公司,但這會使我的映射器更加複雜。例如。客戶,僱主和公司都有地址,所以我需要將這些列別名並映射到各自的模型。這不是簡單地從每個表中檢索所有列並將它們分別映射到每個模型(例如,用一些邏輯將下劃線列轉換爲ZF camelCase),重新使用我的客戶端,僱主和公司映射器。
是否有最佳實踐解決方案,還是取決於個人喜好和環境(性能與可維護性)?