2015-02-09 58 views
-1

我有一個網站,允許用戶在特定位置登錄和註銷。加載主頁面時,我從數據庫中提取數據,在控制器中處理它,然後將其發送到視圖。我的控制器方法中有很多冗餘代碼。Laravel - 如何在這種情況下正確編碼?

如何通過使用類來從DB和進程部分執行拉取操作來實現相同的結果?

+0

寫一個類來做你在每個控制器上做的事情,並將它注入'__construct'方法中? – rmobis 2015-02-09 17:07:13

+1

請提供一些相關的代碼片段!你目前得到什麼...... ;-) – menjaraz 2015-02-09 17:10:55

+0

我還沒有所有的代碼,或者至少我沒有意義發佈。我在寫作時注意到,我一直在重複自己,並開始對更好的實踐進行更多的研究。 – Cristian 2015-02-09 17:48:52

回答

2

與Zend Framework中的Action Helpers不同,Laravel沒有(對我來說)有一個讓您的控制器「瘦」的特定首選方式。當我開始在我的Laravel控制器中注意到冗餘代碼時,我通常會將冗餘代碼抽象爲控制器上的單個受保護方法 - 不依賴於控制器狀態。

當我的控制器開始開發太多的這些幫助器方法時,我創建了獨立的PHP幫助器類,並將這些受保護的方法重構爲獨立類上的公共方法,在受保護的幫助器方法之間具有一對一關係並幫助課堂(即每個班級都做一件事)。如果我開始注意到輔助類之間的冗餘行爲,我創建了一個可以隱藏這個功能的基本幫助器。

+0

非常感謝你的回答。您剛剛簡化了我目前正在學習的SOLID原則。我正在學習,是的,我可以使用控制器內的輔助函數,但僅僅是爲了學習新事物的目的,我想通過SOLID原則來實現。所以,我應該有:控制器通過模型定義的函數從數據庫中提取數據,然後使用助手類來處理數據,另一個幫助器類來格式化數據,然後將其發送到視圖來顯示。這聽起來固體嗎? – Cristian 2015-02-09 17:55:26

+0

@Cristian查看任何代碼都很容易,並且只需一個小小的旋鈕,就可以顯示它如何可能**更少**,或展示它如何更可靠。獲得這種東西的良好感覺的唯一方法是編寫代碼,編寫測試,並瞭解哪種模式更難以測試代碼。 – 2015-02-14 04:31:09