ChannelMakeCommand.php
TLDR
This file, ChannelMakeCommand.php
, is a part of the Demo Projects project. It is located at src/Illuminate/Foundation/Console/ChannelMakeCommand.php
. The file contains the ChannelMakeCommand
class, which extends the GeneratorCommand
class. This command is used to create a new channel class.
Methods
buildClass
This method is used to build the class with the given name. It replaces the placeholders 'DummyUser'
and '{{ userModel }}'
in the generated class code with the base name of the user provider model.
getStub
This method returns the path to the stub file for the generator. In this case, it returns __DIR__.'/stubs/channel.stub'
.
getDefaultNamespace
This method returns the default namespace for the generated class. It appends '\Broadcasting'
to the root namespace.
getOptions
This method returns an array of console command options. In this case, it returns an array containing the force
option, which allows the class to be created even if the channel already exists.
Classes
ChannelMakeCommand
This class extends the GeneratorCommand
class and represents a command for creating a new channel class. It sets the command name, description, and type. It also overrides some methods to customize the class generation process.
<?php
namespace Illuminate\Foundation\Console;
use Illuminate\Console\GeneratorCommand;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputOption;
#[AsCommand(name: 'make:channel')]
class ChannelMakeCommand extends GeneratorCommand
{
/**
* The console command name.
*
* @var string
*/
protected $name = 'make:channel';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Create a new channel class';
/**
* The type of class being generated.
*
* @var string
*/
protected $type = 'Channel';
/**
* Build the class with the given name.
*
* @param string $name
* @return string
*/
protected function buildClass($name)
{
return str_replace(
['DummyUser', '{{ userModel }}'],
class_basename($this->userProviderModel()),
parent::buildClass($name)
);
}
/**
* Get the stub file for the generator.
*
* @return string
*/
protected function getStub()
{
return __DIR__.'/stubs/channel.stub';
}
/**
* Get the default namespace for the class.
*
* @param string $rootNamespace
* @return string
*/
protected function getDefaultNamespace($rootNamespace)
{
return $rootNamespace.'\Broadcasting';
}
/**
* Get the console command arguments.
*
* @return array
*/
protected function getOptions()
{
return [
['force', 'f', InputOption::VALUE_NONE, 'Create the class even if the channel already exists'],
];
}
}