簡體   English   中英

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:假設我有一個countroller 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
    }
}

如您所見,多個控制器可以重用核心業務邏輯。 這將在代碼重用和可維護性方面為您提供很大幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM