簡體   English   中英

如果某個類正在從數據庫中讀取並解釋結果,那么該如何將其松散地耦合到應用程序?

[英]How can a class be loosely coupled to an application if it is reading from a database and interpreting the results?

作為一個PHP開發人員,我的大多數項目都是數據庫驅動的。 我是OOP的摯愛者,雖然剛接觸對象世界,但我嘗試遵循最佳實踐來提高自己的能力。

我的燃眉之急

如果我有一個需要從數據庫獲取信息的對象,那么該對象是如何松散耦合的,因為它嚴重依賴於數據庫的返回結果?

代碼示例:

<?php

class Test {

protected $repository;

public function __construct(Repository $repository)
{
    $this->repository = $repository;
}

public function process()
{
    $results = $this->repository->where('id', 1)->get();

    ( ! empty($results) ) ?: ''; // do something bad.

    foreach ($results as $result) {

        // This is my problem, my class now knows it needs an array key of name to be available.
        // Is this bad? 
        echo $result['name'];

    }
}

}

在這里,我的班級期望使用名稱的數組鍵。 我覺得這很不對勁,因為現在我的課已經與結果集緊密聯系在一起了...

圖層

我已經在應用程序層上進行了大量閱讀,例如域層,服務層,事務腳本,應用程序層等。

即使具備了這些知識,我也看不到解決問題的方法。

完成

很高興聽到您對我是否無緣無故地發瘋的想法。

看到一些代碼示例或進一步的閱讀材料,書籍等鏈接也將很不錯。

我認為您可能對此太過極端了。 我不會花太多時間試圖弄清存儲庫如何不知道您有一個名為name的密鑰。 有人將不得不依賴於您代碼中的某個地方,我認為您的repo類不是放那個的壞地方。

最后,您的目標應該只是在實施新功能,業務規則或修復錯誤時節省您和該代碼庫的維護人員時間。 根據我的經驗,您可以通過隔離應用程序的各個部分(可以預見其復雜性或大量更改)來實現此目的。

因此,除非該鍵需要進行大量更改,或者從結果集中檢索數據將是一個復雜的過程,否則我不必擔心倉庫會知道結果集中的鍵名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM