鍍金池/ 問答/PHP/ 如何正確的使用laravel的包開發(fā)和依賴解耦問題

如何正確的使用laravel的包開發(fā)和依賴解耦問題

問題1:我現(xiàn)在想開發(fā)一套系統(tǒng)給客戶,部分功能免費(fèi),部分功能收費(fèi),是否把每個(gè)大功能都做成laravel包,根據(jù)客戶的不同來決定引用什么?
這樣的需求符合包開發(fā)的初衷嗎?

問題2: 這樣進(jìn)行開發(fā),model依賴或者其它依賴怎么解決, 比如,我會(huì)把user module寫成一個(gè)包,然后article module也寫成一個(gè)包。 這兩個(gè)包都要使用userModel ,我應(yīng)該怎么處理這里依賴關(guān)系呢?
如果說,我分別在兩個(gè)包里面去定義這個(gè)model,那代碼又重復(fù)了,這種體驗(yàn)好像不太好。
如果說我在article module里面去依賴user module這樣也不太好,因?yàn)槲蚁Mc包之間是相互獨(dú)立的。
很糾結(jié),也沒想出辦法。

核心問題就是:我要做一套系統(tǒng),我希望每個(gè)模塊(包)相互獨(dú)立,我要增加什么功能,或者減少什么功能只需要對(duì)模塊(包)做處理就行了。

回答
編輯回答
蔚藍(lán)色

你這需求可以通過路由和中間件解決。比如用戶訪問/order/add需要收費(fèi),但是訪問order/list是免費(fèi)的,那么可以這樣配置:

Route::group('middleware' => ['auth.needPay']], function () {
    Route::get('order/add', ['uses' => 'Order@add']);
});
Route::group('middleware' => ['auth.free']], function () {
    Route::get('order/list', ['uses' => 'Order@list']);
});

中間件怎么添加,可以參照文檔

2018年2月20日 02:05