您好,登錄后才能下訂單哦!
這篇文章主要介紹Laravel自定義Make命令生成Service類的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Laravel 是一套簡潔、優雅的PHP Web開發框架。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網絡APP,而且每行代碼都可以簡潔、富于表達力。
我使用的環境是:Laravel Framework 8.40.0
。
C:\www\wwwroot\laravel8>php artisan --version Laravel Framework 8.40.0
前期知識的相關制作的教程,請參考我的另一篇博客Laravel自定義Make命令生成目標類。
運行如下命令
php artisan make:command MakeService
生成Console/Commands/MakeService.php
命令文件。
修改繼承類
把繼承類修改成GeneratorCommand
,該類的命名空間為Illuminate\Console\GeneratorCommand
。
刪除實例化方法,handle函數
實現一個方法getStub
。
設置name
屬性。
修改$signature
屬性為name
屬性,并設置命令:
protected $name = 'make:service';
設置type
屬性值type
類型設置,我們生成的是service
,所以我們設置的屬性就是Service
。
protected $type = 'Service';
type類型是自己去定義的,本身沒有特殊含義,可以不用設置。
type屬性值僅僅在創建錯誤的時候,給你一個友好的提示,如下所示:
C:\www\wwwroot\laravel8>php artisan make:service TestService already exists! C:\www\wwwroot\laravel8>php artisan make:service TestService Service already exists!
第一個是沒有設置type
屬性的效果,第二個是設置了type
屬性的效果。
官方使用的type有:Controller,Middleware,Cast,Channel…
根據自己的需要修改其他的屬性
設置Stub的位置和命令空間
Stub的位置是在根目錄下Stubs/service.stub
里面。
命名空間在app
目錄下Services
里面。
實例代碼如下:
<?php namespace App\Console\Commands; use Illuminate\Console\GeneratorCommand; class MakeService extends GeneratorCommand{ /** * The console command name. * * @var string */ protected $name = 'make:service'; /** * The console command description. * * @var string */ protected $description = '生成service對象類'; /** * The type of class being generated. * * @var string */ protected $type = 'Service'; /** * Get the stub file for the generator. * * @return string */ protected function getStub() { // Implement getStub() method. return $this->laravel->basePath('/stubs/service.stub'); } /** * Get the default namespace for the class. * * @param string $rootNamespace * @return string */ protected function getDefaultNamespace($rootNamespace) { return $rootNamespace.'\Services'; }}
我的service文件目前不需要繼承或者依賴什么類。所以,相對的比較簡單。如果你有特別的需要,可以進行擴展操作。
實例代碼如下:
<?phpnamespace DummyNamespace;class DummyClass{ //}
DummyClass
和DummyNamespace
在繼承的GeneratorCommand
類內部會被自動替換成自動生成的類名和設置的命名空間。
建議這種寫法,可以使用編輯器的語法提示,獲得更友好的提示效果。
另外,你也可以使用Larave
內置的{{ class }}
和{{ namespace }}
寫法。
執行以下命令
php artisan make:service IndexService
能正常生成成功
C:\www\wwwroot\laravel8>php artisan make:service IndexService Service created successfully.
生成的文件的目錄是app/Services/IndexService.php
,生成的文件如下:
<?php namespace App\Services; class IndexService{ //}
以上是“Laravel自定義Make命令生成Service類的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。