SeederMakeCommand.php
TLDR
This file, SeederMakeCommand.php
, is a part of the Illuminate\Database\Console\Seeds
namespace and extends the GeneratorCommand
class. It is responsible for creating a new seeder class.
Methods
handle
This method is responsible for executing the console command. It calls the handle
method of the parent class.
getStub
This method returns the stub file path for the seeder generator. It resolves the path using the resolveStubPath
method.
resolveStubPath
This method resolves the fully-qualified path to the stub file. If a custom path is specified, it checks if the file exists. Otherwise, it returns the default path.
getPath
This method returns the destination class path for the generated seeder class. It replaces the root namespace with an empty string and appends the class name to the relevant directory path.
rootNamespace
This method returns the root namespace for the seeder class.
<?php
namespace Illuminate\Database\Console\Seeds;
use Illuminate\Console\GeneratorCommand;
use Illuminate\Support\Str;
use Symfony\Component\Console\Attribute\AsCommand;
#[AsCommand(name: 'make:seeder')]
class SeederMakeCommand extends GeneratorCommand
{
/**
* The console command name.
*
* @var string
*/
protected $name = 'make:seeder';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Create a new seeder class';
/**
* The type of class being generated.
*
* @var string
*/
protected $type = 'Seeder';
/**
* Execute the console command.
*
* @return void
*/
public function handle()
{
parent::handle();
}
/**
* Get the stub file for the generator.
*
* @return string
*/
protected function getStub()
{
return $this->resolveStubPath('/stubs/seeder.stub');
}
/**
* Resolve the fully-qualified path to the stub.
*
* @param string $stub
* @return string
*/
protected function resolveStubPath($stub)
{
return is_file($customPath = $this->laravel->basePath(trim($stub, '/')))
? $customPath
: __DIR__.$stub;
}
/**
* Get the destination class path.
*
* @param string $name
* @return string
*/
protected function getPath($name)
{
$name = str_replace('\\', '/', Str::replaceFirst($this->rootNamespace(), '', $name));
if (is_dir($this->laravel->databasePath().'/seeds')) {
return $this->laravel->databasePath().'/seeds/'.$name.'.php';
}
return $this->laravel->databasePath().'/seeders/'.$name.'.php';
}
/**
* Get the root namespace for the class.
*
* @return string
*/
protected function rootNamespace()
{
return 'Database\Seeders\\';
}
}