前言
Artisan 是 Laravel 附帶的命令列介面。Artisan 以 artisan
指令碼的形式存在於應用的根目錄,並提供了許多有用的命令,這些命令可以在構建應用時為你提供幫助。
除 Artisan 提供的命令外,你也可以編寫自己的自定義命令。 命令在多數情況下位於 app/Console/Commands 目錄中; 不過,只要你的命令可以由 Composer 載入,你就可以自由選擇自己的儲存位置。
前期工作
在開始之前,我們要準備相應的目錄和檔案。
我們可以使用以下命令快速生成 ServiceMakeCommand.php
檔案:
php artisan make:command ServiceMakeCommand
執行完後會在你的 Console
資料夾下生成 Commands
資料夾和 Commands/ServiceMakeCommand.php
檔案。
我們還需要在 Commands
資料夾下新增一些資料夾和檔案:
結構如下:
- app
- Console
+ - Commands
+ - stubs
+ - service.plain.stub
+ - ServiceMakeCommand.php
- Kernel.php
- .
- .
- .
service.plain.stub
程式碼:
app/Console/Commands/stubs/service.plain.stub
<?php
namespace {{ namespace }};
class {{ class }}
{
//
}
我們的前期準備就此結束,是不是很簡單?哈哈。
快速開始
接下來我們就直接一把梭哈了,注意改動的程式碼噢。
我們主要是對著 ServiceMakeCommand.php
檔案一把梭哈,所以:
app/Console/Commands/ServiceMakeCommand.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\GeneratorCommand;
class ServiceMakeCommand extends GeneratorCommand
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'make:service {name}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Create a new controller class';
/**
* The type of class being generated.
*
* @var string
*/
protected $type = 'Service';
/**
* Get the stub file for the generator.
*
* @return string
*/
protected function getStub()
{
return __DIR__ . '/stubs/service.plain.stub';
}
/**
* Get the default namespace for the class.
*
* @param string $rootNamespace
* @return string
*/
protected function getDefaultNamespace ( $rootnamespace )
{
return $rootnamespace . '\Services';
}
}
最後,我們執行以下命令快速生成 UserService.php
檔案:
php artisan make:service UserService
結構如下:
- app
- Console
- Commands
- stubs
- service.plain.stub
- ServiceMakeCommand.php
- Kernel.php
+ - Services
+ - UserService.php
- .
- .
- .
讓我們檢視 UserService.php
和我們想象中的程式碼是否一致:
app/Services/UserService.php
<?php
namespace App\Services;
class UserService
{
//
}
恭喜?,我們已經做到我們想要的結果了。
總結
雖然我們做得比較簡陋,但我們只需稍加改進,就可以讓它變得更完善。
本作品採用《CC 協議》,轉載必須註明作者和本文連結