ScopeMakeCommand.php
TLDR
This file contains the implementation of the ScopeMakeCommand
class, which is a command for generating a new scope class in a Laravel project.
Classes
ScopeMakeCommand
The ScopeMakeCommand
class extends the GeneratorCommand
class and represents a command that can be used to generate a new scope class in a Laravel project. It is used to create a new scope class for filtering query results. This command can be executed through the Laravel Artisan CLI using the command make:scope
. The class has the following properties and methods:
-
$name
: The console command name. Set to'make:scope'
. -
$description
: The console command description. Set to'Create a new scope class'
. -
$type
: The type of class being generated. Set to'Scope'
. -
getStub()
: Returns the stub file path for the generator. -
resolveStubPath($stub)
: Resolves the fully-qualified path to the stub. -
getDefaultNamespace($rootNamespace)
: Returns the default namespace for the class. -
getOptions()
: Returns the console command options.
<?php
namespace Illuminate\Foundation\Console;
use Illuminate\Console\GeneratorCommand;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputOption;
#[AsCommand(name: 'make:scope')]
class ScopeMakeCommand extends GeneratorCommand
{
/**
* The console command name.
*
* @var string
*/
protected $name = 'make:scope';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Create a new scope class';
/**
* The type of class being generated.
*
* @var string
*/
protected $type = 'Scope';
/**
* Get the stub file for the generator.
*
* @return string
*/
protected function getStub()
{
return $this->resolveStubPath('/stubs/scope.stub');
}
/**
* Resolve the fully-qualified path to the stub.
*
* @param string $stub
* @return string
*/
protected function resolveStubPath($stub)
{
return file_exists($customPath = $this->laravel->basePath(trim($stub, '/')))
? $customPath
: __DIR__.$stub;
}
/**
* Get the default namespace for the class.
*
* @param string $rootNamespace
* @return string
*/
protected function getDefaultNamespace($rootNamespace)
{
return is_dir(app_path('Models')) ? $rootNamespace.'\\Models\\Scopes' : $rootNamespace.'\Scopes';
}
/**
* Get the console command arguments.
*
* @return array
*/
protected function getOptions()
{
return [
['force', 'f', InputOption::VALUE_NONE, 'Create the class even if the scope already exists'],
];
}
}