2012-11-05 61 views
1

我不知道,如果我得到的Silex的權在哪裏存儲「商業邏輯」,這是沒有直接關係的持久性,觀點的總體思路,等在Silex中建立業務邏輯的最佳方式是什麼?

示例:在我的「演示程序」我需要一種方法生成n個唯一的號碼。我需要模板中的這些數字來包含部分模板。我創建了一個RandomNumberServiceProvider,它可以在x和y之間返回n個數字。在我的$ app-closure中,我使用了這個服務,將隨機數字分配給我的樹枝模板。完成。

更復雜的例子:假設您必須開發一個「複雜」導入函數。您必須從磁盤讀取數據,驗證數據,以某種方式進行轉換並最終將其存儲到數據庫中。你會不會在這種情況下創建一個ImportServiceProvider來訪問其他服務(用於持久...)?

回答

3

就是這樣的,是的。

雖然,而不是注入完整的服務,我會建議只注入工廠。這樣,您可以防止應用程序邏輯在控制器(或其等價物)中泄漏,同時將域對象保留爲專注於特定任務。

$factory = new \My\ServiceFactory(/* ..dependencies */); 

// --- SNIP 

$app->get('/foo/{bar}', function ($app, $bar) use ($factory) { 

    $someService = $factory->build(...); 
    // do something with $someService 

    return new Response(...); 
}); 
相關問題