亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 Laravel 中的 Repository Pattern 調用事件可以嗎?

從 Laravel 中的 Repository Pattern 調用事件可以嗎?

PHP
一只斗牛犬 2021-11-13 19:10:11
我有我創建模型的存儲庫模式。我想每次創建模型時都調用事件,我應該從控制器還是從存儲庫中調用?如果我在存儲庫模式中這樣做,我會打破單一責任原則嗎?這是我的代碼示例class FriendshipRepository implements IFriendshipStorageRepository{    public function create(User $user, User $follower): Friendship    {        $friendship = Friendship::create([            'user_id' => $user->id,            'follower_id' => $follower->id        ]);        event(new FriendshipCreatedEvent($friendship));        return $friendship;    }    public function destroy(User $user, User $userToUnfollow)    {        $friendship = $user->getFriendship($userToUnfollow);        $friendship->delete();        event(new FriendshipDeletedEvent($friendship));    }}或者我應該在控制器和存儲庫之間多做一層?新層將使用存儲庫和調用事件,但控制器只會調用該新層。
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

我喜歡將服務用于此類用例。您的控制器可以調用NewFriendshipService.

該服務將實現一個工作流,如下所示:

  • 在數據庫中創建關系(使用您的存儲庫)

  • 向新朋友發送通知

  • 計算新的好友推薦(“你可能也認識這個人”)

  • ...

然后,該服務可以充當控制器和存儲庫之間的某種“中間件”。這里的好做法是,服務只實現工作流,而不直接實現業務邏輯。


查看完整回答
反對 回復 2021-11-13
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

為了尊重單一職責原則,您可以使用觀察者類Eloquent Observers。

當您執行 Eloquent 操作(例如createddeleted關于您的用例)時,Laravel 會“自動”調用它的方法


查看完整回答
反對 回復 2021-11-13
  • 2 回答
  • 0 關注
  • 208 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號