Laravel 控制器结构和控制器数量
Laravel Controllers Structure And Numbers of Controller
问题 1:我的控制器结构如下:
-http
-controllers
--admin
-controlle_1...n
--user
-controlle_1...n
--Front View
-controlle_1...n
还好吗?有哪些好的做法。
问题 2:假设我有一个计数器 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
}
}
如您所见,多个控制器可以重用核心业务逻辑。这将对您的代码重用和可维护性有很大帮助。
问题 1:我的控制器结构如下:
-http
-controllers
--admin
-controlle_1...n
--user
-controlle_1...n
--Front View
-controlle_1...n
还好吗?有哪些好的做法。
问题 2:假设我有一个计数器 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
}
}
如您所见,多个控制器可以重用核心业务逻辑。这将对您的代码重用和可维护性有很大帮助。