Laravel控制器结构和控制器数量

时间:2016-04-27 08:31:04

标签: php laravel filesystems

问题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个控制器。

有什么好的做法?

1 个答案:

答案 0 :(得分:1)

一个好的做法是将业务逻辑与控制器分开。所以基本上你有一套独立的类来处理业务逻辑。

<强> ./服务/ 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;
    }
}

<强> ./存储库/ ItemRepository.php

namespace Repository;

class ItemRepository
{
    public function create($data)
    {
        $item = new Item;
        $item->fill($data);
        $item->save();

        return $item;
    }
}

<强> ./控制器/前端/ 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
    }
}

<强> ./控制器/管理/ 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
    }
}

正如您所看到的,多个控制器可以重用核心业务逻辑。这将为您提供大量代码重用和可维护性。