所以,我正在尝试在Laravel 5.3上使用PHP Artisan为我的项目中的每个Cron配置创建一个类文件,我这样做是因为我可能想要从一个单独的GUI创建这些文件在将来。
我能够创建文件,并且我正在使用存根,所以一切都按原样生成,然而问题是由于某种原因,如果一个文件,说“cron_4”存在并且我调用我的自定义命令php artisan make:cron cron_4
它允许我这样做,只会覆盖现有文件。
到目前为止,这是我的代码。关于我在这里做错了什么的想法?
<?php
namespace App\Console\Commands;
use Illuminate\Console\GeneratorCommand;
use Symfony\Component\Console\Input\InputOption;
class CronMakeCommand extends GeneratorCommand
{
/**
* The console command name.
*
* @var string
*/
protected $name = 'make:cron';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Create a new Cron class';
/**
* The type of class being generated.
*
* @var string
*/
protected $type = 'Cron';
/**
* Get the stub file for the generator.
*
* @return string
*/
protected function getStub()
{
return __DIR__.'/stubs/cron.stub';
}
/**
* Get the default namespace for the class.
*
* @param string $rootNamespace
* @return string
*/
protected function getDefaultNamespace($rootNamespace)
{
return $rootNamespace.'\Crons';
}
/**
* Execute the console command.
*
* @return void
*/
public function fire()
{
if (! $this->option('id')) {
return $this->error('Missing required option: --id');
}
parent::fire();
}
/**
* Replace the class name for the given stub.
*
* @param string $stub
* @param string $name
* @return string
*/
protected function replaceClass($stub, $name)
{
$stub = parent::replaceClass($stub, $name);
return str_replace('dummy:cron', 'Cron_' . $this->option('id'), $stub);
}
/**
* Determine if the class already exists.
*
* @param string $rawName
* @return bool
*/
protected function alreadyExists($rawName)
{
return class_exists($rawName);
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return [
['id', null, InputOption::VALUE_REQUIRED, 'The ID of the Cron being Generated.'],
];
}
}
答案 0 :(得分:0)
我明白了,这是我的自定义代码,应该责备
/**
* Determine if the class already exists.
*
* @param string $rawName
* @return bool
*/
protected function alreadyExists($rawName)
{
return class_exists($rawName);
}
这会覆盖默认配置,这可能会因$rawName
变量而失败。
在我的情况下,简单地删除此功能解决了这个问题。