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 获取这些记录并且相同。所以我应该为所有这些设置一个控制器,或者我应该为 UserAdminFront 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
    }
}

如您所见,多个控制器可以重用核心业务逻辑。这将对您的代码重用和可维护性有很大帮助。