/
adssoft
/
ads_goskey_api
Обзор
Документация
Войти
/
adssoft
/
ads_goskey_api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/Console/Commands/Tools/GenerateControllerServiceRespository.php
281 строка
8 KB
Viatcheslav Malakhov
update
23 мар 2026, 17:28
23 мар 2026, 17:28
09e4e2a
Код
Авторство
О чём код?
<?php namespace App\Console\Commands\Tools; use Illuminate\Console\Command; class GenerateControllerServiceRespository extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'tools:generate-csr {folder} {class}'; /** * The console command description. * * @var string */ protected $description = 'This command generates files: Controller, Service and Respository. All linked and ready to use.'; /** * Execute the console command. * * @return int */ public function handle() { $folders = [ 'controller' => app_path('Http/Controllers/'.$this->argument('folder')), 'service' => app_path('Services/'.$this->argument('folder')), 'service_contracts' => app_path('Services/'.$this->argument('folder').'/Contracts'), 'repository' => app_path('Repositories/'.$this->argument('folder')), 'repository_contract' => app_path('Repositories/'.$this->argument('folder').'/Contracts'), 'repository_eloquent' => app_path('Repositories/'.$this->argument('folder').'/Eloquent'), ]; foreach($folders as $key => $path) { if(!is_dir($path)) { $this->info('Create folder: '.$path); mkdir($path, 0755, true); } $folder = $this->argument('folder'); $class = $this->argument('class'); $camelClass = mb_strtolower($this->argument('class')); if($key == 'controller') { $file = $path.'/'.$this->argument('class').'Controller.php'; if(!file_exists($file) || file_exists($file)) { $this->info("\tCreate file: ".$file); file_put_contents($file, "<?php namespace App\\Http\\Controllers\\".$folder."; use App\\Http\\Controllers\\Controller; use Illuminate\\Http\\Request; use App\\Services\\".$folder."\\Contracts\\".$class."ServiceContract; class ".$class."Controller extends Controller { public function __construct(".$class."ServiceContract $".$camelClass."Service) { \$this->".$camelClass."Service = $".$camelClass."Service; } public function index(Request \$inputs) { return response()->success( \$this->".$camelClass."Service->index(\$inputs->all()) ); } public function store(Request \$inputs) { return response()->success( \$this->".$camelClass."Service->store(\$inputs->all()) ); } public function show(int \$id) { return response()->success( \$this->".$camelClass."Service->show(\$id) ); } public function update(Request \$inputs, int \$id) { return response()->success( \$this->".$camelClass."Service->update(\$id, \$inputs->all()) ); } public function destroy(int \$id) { \$this->".$camelClass."Service->destroy(\$id); return response()->success(true); } } "); } } if($key == 'service') { $file = $path.'/'.$this->argument('class').'Service.php'; if(!file_exists($file) || file_exists($file)) { $this->info("\tCreate file: ".$file); file_put_contents($file, "<?php namespace App\\Services\\".$folder."; use Illuminate\\Database\\Eloquent\\Collection; use Illuminate\\Database\\Eloquent\\Model; use Illuminate\\Support\\Arr; use Illuminate\\Support\\Facades\\DB; use App\\Repositories\\".$folder."\\Contracts\\".$class."RepositoryContract; use App\\Models\\".$folder."\\".$class."; use App\\Services\\".$folder."\\Contracts\\".$class."ServiceContract; // NOTE: Add this into app/Providers/AppServiceProvider.php final class ".$class."Service implements ".$class."ServiceContract { public function __construct(".$class."RepositoryContract \$".$camelClass."Repository) { \$this->".$camelClass."Repository = \$".$camelClass."Repository; } public function index(array \$inputs = []) { return \$this->".$camelClass."Repository->index(\$inputs); } public function store(array \$inputs) { return \$this->".$camelClass."Repository->store(\$inputs); } public function update(int \$id, array \$inputs) { return \$this->".$camelClass."Repository->update(\$id, \$inputs); } public function show(int \$id) { return \$this->".$camelClass."Repository->show(\$id); } public function destroy(int \$id) { return \$this->".$camelClass."Repository->destroy(\$id); } } "); } } if($key == 'service_contracts') { $file = $path.'/'.$this->argument('class').'ServiceContract.php'; if(!file_exists($file) || file_exists($file)) { $this->info("\tCreate file: ".$file); file_put_contents($file, "<?php namespace App\\Services\\".$folder."\\Contracts; use Illuminate\\Database\\Eloquent\\Model; // NOTE: Add this into app/Providers/AppServiceProvider.php interface ".$class."ServiceContract { public function index(array \$inputs = []); public function store(array \$inputs); public function update(int \$id, array \$inputs); public function show(int \$id); public function destroy(int \$id); } "); } } if($key == 'repository_contract') { $file = $path.'/'.$this->argument('class').'RepositoryContract.php'; if(!file_exists($file) || file_exists($file)) { $this->info("\tCreate file: ".$file); file_put_contents($file, "<?php namespace App\\Repositories\\".$folder."\\Contracts; use Illuminate\\Database\\Eloquent\\Model; // NOTE: Add this into app/Providers/RepositoryServiceProvider.php interface ".$class."RepositoryContract { public function index(array \$inputs = []); public function store(array \$inputs); public function update(int \$id, array \$inputs); public function show(int \$id); public function destroy(int \$id); } "); } } if($key == 'repository_eloquent') { $file = $path.'/Eloquent'.$this->argument('class').'Repository.php'; if(!file_exists($file) || file_exists($file)) { $this->info("\tCreate file: ".$file); file_put_contents($file, "<?php namespace App\\Repositories\\".$folder."\\Eloquent; use Illuminate\\Database\\Eloquent\\Builder; use Illuminate\\Database\\Eloquent\\Model; use Spatie\\QueryBuilder\\QueryBuilder; use Spatie\\QueryBuilder\\AllowedFilter; use App\\Repositories\\".$folder."\\Contracts\\".$class."RepositoryContract; // NOTE: Add this into app/Providers/RepositoryServiceProvider.php class Eloquent".$class."Repository implements ".$class."RepositoryContract { public function index(array \$inputs = []) { return ['ok']; } public function store(\$properties) { return ['ok']; } public function update(int \$id, \$properties) { return ['ok']; } public function show(int \$id) { return ['ok']; } public function destroy(int \$id) { return ['ok']; } } "); } } } return Command::SUCCESS; } }