[英]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.