master

laravel/framework

Last updated at: 29/12/2023 09:23

EventMakeCommand.php

TLDR

This file is a part of the Demo Projects project and is located at src/Illuminate/Foundation/Console/EventMakeCommand.php. It contains a class EventMakeCommand which extends GeneratorCommand and is used to create a new event class.

Methods

alreadyExists

This method is used to determine if a class already exists. It checks if the given class name exists or if the file already exists at the path of the generated class.

getStub

This method is used to get the stub file for the generator. It returns the path of the stub file used to generate the event class.

resolveStubPath

This method is used to resolve the fully-qualified path to the stub. It checks if a custom path for the stub file exists, otherwise, it returns the default stub file path relative to the current file.

getDefaultNamespace

This method is used to get the default namespace for the event class. It appends the Events namespace to the root namespace.

getOptions

This method is used to get the console command options. It returns an array of options where force option allows creating the event class even if it already exists.

<?php

namespace Illuminate\Foundation\Console;

use Illuminate\Console\GeneratorCommand;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputOption;

#[AsCommand(name: 'make:event')]
class EventMakeCommand extends GeneratorCommand
{
    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'make:event';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Create a new event class';

    /**
     * The type of class being generated.
     *
     * @var string
     */
    protected $type = 'Event';

    /**
     * Determine if the class already exists.
     *
     * @param  string  $rawName
     * @return bool
     */
    protected function alreadyExists($rawName)
    {
        return class_exists($rawName) ||
               $this->files->exists($this->getPath($this->qualifyClass($rawName)));
    }

    /**
     * Get the stub file for the generator.
     *
     * @return string
     */
    protected function getStub()
    {
        return $this->resolveStubPath('/stubs/event.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 $rootNamespace.'\Events';
    }

    /**
     * Get the console command options.
     *
     * @return array
     */
    protected function getOptions()
    {
        return [
            ['force', 'f', InputOption::VALUE_NONE, 'Create the class even if the event already exists'],
        ];
    }
}