[英]Laravel Controllers Structure And Numbers of Controller
問題1:我的控制器結構如下:
-http
-controllers
--admin
-controlle_1...n
--user
-controlle_1...n
--Front View
-controlle_1...n
可以嗎 有哪些好的做法。
問題2:假設我有一個countroller CityController
所以對於admin
我正在為User
插入記錄,而對於Front View
我要獲取這些記錄。 因此,我應該為所有這些控制器配備一個控制器,或者應該為User
, Admin
和Front View
設置單獨的控制器。
我正在從事電子商務應用程序,所以我有15個控制器。
有哪些好的做法?
一個好的做法是將您的業務邏輯與控制器分開。 因此,從本質上講,您有一組單獨的類處理業務邏輯。
./Service/ItemService.php
namespace Service;
class ItemService
{
public function create($name, $description, $active = true)
{
$itemRepository = new ItemRepository();
$item = $itemRepository->create([
'name' => $name,
'description' => $description,
'active' => $active,
]);
// Create audit log
$log = new AuditLogService;
$log->create("New product was created", $item);
// Update stock
// Send notification email, etc.
return $item;
}
}
./Repository/ItemRepository.php
namespace Repository;
class ItemRepository
{
public function create($data)
{
$item = new Item;
$item->fill($data);
$item->save();
return $item;
}
}
./Controller/FrontEnd/ItemController.php
namespace Controller\FrontEnd;
class ItemController
{
public function store()
{
// Validate data
// Call service to create item
$itemService = new ItemService;
$item = $itemService->create($request->inputs);
// return view response
}
}
./Controller/Admin/ItemController.php
namespace Controller\Admin;
class ItemController
{
public function store()
{
// Validate data
// Call service to create item
$itemService = new ItemService;
$item = $itemService->create($request->inputs);
// return JSON response
}
}
如您所見,多個控制器可以重用核心業務邏輯。 這將在代碼重用和可維護性方面為您提供很大幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.