laravel5.6增加artisan自定义命令

  • 内容
  • 评论
  • 相关

下面用Repositories逻辑层举例:

1.使用命令创建一个命令生成文件:

php artisan make:command RepoMaker

2.编辑app/commands/RepoMaker.php

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class RepoMaker extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'make:repo {repo} {--base=admin}';

/**
* The console command description.
*
* @var string
*/
protected $description = '创建业务处理逻辑:php artisan make:repo Test/TestRepo --base=admin';

protected $root_path = 'Repositories';

protected $template = <<<line
<?php
/**
* 类名与控制器名称对应,如 TagController 对应 TagRepo
* 每个方法需要添加详细的业务说明
* 方法参数包涵数组的,必须标明数据包括的属性
* create time: {createtime}
* create by: ken_jan
*/
namespace App\\Repositories{namespace};

use App\Repositories\{base}Repo;

class {repo} extends {base}Repo
{

}
line;

/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
try {
// trait 文件名,包涵路径,如 Materials/TeachingMaterialMgrTrait
// 将会保存到 App/Models/Traits/Materials/TeachingMaterialMgrTrait.php
$repo = $this->argument('repo');
$base = ucfirst($this->option('base'));
$arr = explode('/', $repo);

// 将最后一段提取出来作为 repo 的名字
$repo = str_replace('.php', '', array_pop($arr));
$namespace = '\\'. $base . (count($arr) ? '\\'. implode('\\', $arr) : '');
// 剩下的部分为目录路径
$folder = app_path($this->root_path). str_replace('\\', '/', $namespace);

if (!is_dir($folder)) {
mkdir($folder, 0777, true);
chmod($folder, 0777);
}

// 修改模板信息
$template = str_replace('{namespace}', $namespace, $this->template);
$template = str_replace('{base}', $base, $template);
$template = str_replace('{repo}', $repo, $template);
$template = str_replace('{createtime}', date('Y-m-d H:i:s'), $template);

// 保存文件
file_put_contents($folder. '/'. $repo. '.php', $template);

$this->info('创建 repo 成功:'. $folder. '/' . $repo. '.php');
} catch (\Exception $ex) {
$this->error($ex->getMessage());
}
}
}

此时执行php artisan已经可以看见多了make:repo这个命令

3.在app下新建Repositories/AdminRepo.php

<?php
namespace App\Repositories;

class AdminRepo
{
//
}

4.生成自定义的repositories逻辑文件

php artisan make:repo TestRepo即可生成TestRepo.php文件

评论

2条评论
  1. Gravatar 头像

    XRumerTest

    Hello. And Bye.

  2. Gravatar 头像

    DiannaAdora

    Free sex in u city. Try it, you will like it!