Laravel 创建自定义的 artisan make 命令

我在项目中用到了repository 模式 需要新创建repository模板,我在想是不是也用命令生成来比较好一些,我搜了一些命令找到 相对应的文件

           Illuminate\Foundation\Console\ProviderMakeCommand

           Illuminate\Routing\Console\ControllerMakeCommand

使用命令创建一个新的命令生成文件

        php artisan make:command MakeRepository

文件内容

getNamespace($name), $this->setModel()],
            $stub
        );

        return $this;
    }


    /**
     * set Model
     *
     */
    private function setModel()
    {
        if (!empty($this->option('model'))) {
            return $this->option('model');
        } else {
            $name = explode('/', $this->getNameInput('name'));
            return str_replace('Repository','',$name[count($name)-1]);
        }
    }


    /**
     * Get the console command options.
     *
     * @return array
     */
    protected function getOptions()
    {
        return [
            ['model', 'm', InputOption::VALUE_OPTIONAL, 'Injection  model.']
        ];
    }
}

 

然后创建 Repository 模板文件 repository.stub  

 /resources/stubs/repository.stub  我是把模板目录放到这个地方,和上面引入的路径一样就行

文件内容(也可以自已按照需求定义自己的模板)

 

 

RepositoryNamespace和ModelName 这俩个是自动分配到模板的

 

注册命令类

将RepositoryMakeCommand添加到 App\Console\Kernel.php

protected $commands = [  

           Commands\RepositoryMakeCommand::class

];

最后使用

php artisan make:repository /Test/TestRepository  生成到 app/repositorys/Test/TestRepository.php

php artisan make:repository TestRepository  生成到 app/repositorys/TestRepository.php

php artisan make:repository TestRepository --model=AAA  生成到 app/repositorys/TestRepository.php,指定model AAA

我们还设置了一个model的参数 用来指定model 不设置默认为 你的Repository文件名,你也可以设置自己需要的参数

Laravel 创建自定义的 artisan make 命令_第1张图片

Laravel 创建自定义的 artisan make 命令_第2张图片

 

你可能感兴趣的:(Laravel,Artisan)