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

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

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

問題2: 這樣進行開發(fā),model依賴或者其它依賴怎么解決, 比如,我會把user module寫成一個包,然后article module也寫成一個包。 這兩個包都要使用userModel ,我應該怎么處理這里依賴關系呢?
如果說,我分別在兩個包里面去定義這個model,那代碼又重復了,這種體驗好像不太好。
如果說我在article module里面去依賴user module這樣也不太好,因為我希望包與包之間是相互獨立的。
很糾結,也沒想出辦法。

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

回答
編輯回答
蔚藍色

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

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