Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
vendor
/
invoiceshelf
/
modules
/
src
/
Publishing
:
GeneratorCommand.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Nwidart\Modules\Commands; use Illuminate\Console\Command; use Nwidart\Modules\Exceptions\FileAlreadyExistException; use Nwidart\Modules\Generators\FileGenerator; abstract class GeneratorCommand extends Command { /** * The name of 'name' argument. * * @var string */ protected $argumentName = ''; /** * Get template contents. * * @return string */ abstract protected function getTemplateContents(); /** * Get the destination file path. * * @return string */ abstract protected function getDestinationFilePath(); /** * Execute the console command. */ public function handle() : int { $path = str_replace('\\', '/', $this->getDestinationFilePath()); if (!$this->laravel['files']->isDirectory($dir = dirname($path))) { $this->laravel['files']->makeDirectory($dir, 0777, true); } $contents = $this->getTemplateContents(); try { $overwriteFile = $this->hasOption('force') ? $this->option('force') : false; (new FileGenerator($path, $contents))->withFileOverwrite($overwriteFile)->generate(); $this->info("Created : {$path}"); } catch (FileAlreadyExistException $e) { $this->error("File : {$path} already exists."); return E_ERROR; } return 0; } /** * Get class name. * * @return string */ public function getClass() { return class_basename($this->argument($this->argumentName)); } /** * Get default namespace. * * @return string */ public function getDefaultNamespace() : string { return ''; } /** * Get class namespace. * * @param \Nwidart\Modules\Module $module * * @return string */ public function getClassNamespace($module) { $extra = str_replace($this->getClass(), '', $this->argument($this->argumentName)); $extra = str_replace('/', '\\', $extra); $namespace = $this->laravel['modules']->config('namespace'); $namespace .= '\\' . $module->getStudlyName(); $namespace .= '\\' . $this->getDefaultNamespace(); $namespace .= '\\' . $extra; $namespace = str_replace('/', '\\', $namespace); return trim($namespace, '\\'); } }