Laravel框架:通過自定義命令建立service服務層初體驗

雨夜的部落格發表於2021-03-08
  • 新建命令

    php artisan make:command AddService

    執行該命令,將會在app\Console目錄下生成Commands目錄,同時在 app\Console\Commands 目錄下生成 AddService.php 檔案。

  • 建立存根目錄及檔案
    在app\Console\Commands目錄下建立Stubs目錄,可以直接右鍵新建資料夾,或使用命令列 mkdir app\Console\Commands\Stubs 在該目錄下新增名為 services.stub 的檔案,完整路徑為app/Console/Commands/Stubs/services.stub

  • 編輯services.stub並新增內容
    將如下內容新增到services.stub檔案中並儲存。

    <?php namespace DummyNamespace;class DummyClass {}
  • 編輯AddService.php並新增內容
    將AddService.php內容清空,並使用以下內容完全替換。

    <?phpnamespace App\Console\Commands;use Illuminate\Console\GeneratorCommand;class AddServices extends GeneratorCommand{
    /**
     * 控制檯命令名稱
     *
     * @var string
     */
    protected $name = 'make:service';
    /**
     * 控制檯命令描述
     *
     * @var string
     */
    protected $description = 'Create a new service  class';
    /**
     * 生成類的型別
     *
     * @var string
     */
    protected $type = 'Services';
    /**
     * 獲取生成器的存根檔案
     *
     * @return string
     */
    protected function getStub()
    {
        return __DIR__.'/Stubs/services.stub';
    }
    
    /**
     * 獲取類的預設名稱空間
     *
     * @param  string  $rootNamespace
     * @return string
     */
    
    protected function getDefaultNamespace($rootNamespace)
    {
        return $rootNamespace.'\Services';
    }}
  • 註冊命令
    將以下內容新增到Kernel.php檔案的 protected $commands = [] 屬性陣列中,使命令生效。

    \App\Console\Commands\AddServices::class
    protected $commands = [
    \App\Console\Commands\AddServices::class];

測試命令(自定義命令)
到這裡,自定義命令已經可以使用了,執行 php artisan list 可以看到有 make:service 該命令支援。

  • 執行如下命令進行測試
    php artisan make:service TeachersService
    在app目錄下看到有Services目錄生成,同時該目錄下會生成TeachersService.php檔案,詳細路徑為app\Services\TeachersService.php
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章