laravel 5.7 创建“Transformer” (变形文件) 命令
- 作者 : zfajax舫
- |
- 发布时间 : 6年前
- |
- 评论数 : 0
- 查看数 : 28
第一步--生成命令文件
php artisan make:command MakeTransformer
第二步--编辑生成文件的命令文件
`app/Console/Commands/MakeTransformer.php`
<?php
namespace App\Console\Commands;
use Illuminate\Support\Str;
use Illuminate\Console\GeneratorCommand;
class MakeTransformer extends GeneratorCommand
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'make:transformer {name}';
/**
* The console command description.
*
* @var string
*/
protected $description = '创建 transformer 变形文件';
/**
* @return string
*/
protected function getStub()
{
return __DIR__.'/stubs/transformer';
}
/**
* @param $name
* @return string
*/
protected function getPath($name)
{
$name = Str::replaceFirst($this->rootNamespace(), '', $name);
return $this->laravel['path'].'/'.str_replace('\\', '/', $name).'Transformer.php';
}
/**
* @param $name
* @return mixed
*/
protected function buildClass($name)
{
$stub = $this->files->get($this->getStub());
return $this->replaceClass($this->replaceInstance($stub, $name), $name);
}
/**
* @param $stub
* @param $name
* @return mixed
*/
protected function replaceInstance($stub, $name)
{
$class = str_replace($this->getNamespace($name).'\\', '', $name);
return str_replace('dummyInstance', lcfirst($class), $stub);
}
/**
* @param $rootNamespace
* @return string
*/
protected function getDefaultNamespace($rootNamespace)
{
return $rootNamespace.'\Transformers';
}
}
第三步--创建模板文件
`app/Console/Commands/stubs/transformer`
<?php
namespace App\Transformers;
use App\Models\DummyClass;
use League\Fractal\TransformerAbstract;
class DummyClassTransformer extends TransformerAbstract
{
public function transform(DummyClass $dummyInstance)
{
return [
'id' => $dummyInstance->id,
];
}
}
第四部--使用命令 ,可以没有Transformer后缀
php artisan make:transformer {name}
文件路径`app/Transformers/{name}.php`
总结
- 生成命令文件
- 编辑命令文件
- 创建模板文件
- 使用命令