/home/aloic1/public_html/core/vendor/livewire/livewire/src/Commands/MakeCommand.php
<?php
namespace Livewire\Commands;
use Illuminate\Support\Facades\File;
class MakeCommand extends FileManipulationCommand
{
protected $signature = 'livewire:make {name} {--force} {--inline} {--test} {--stub= : If you have several stubs, stored in subfolders }';
protected $description = 'Create a new Livewire component';
public function handle()
{
$this->parser = new ComponentParser(
config('livewire.class_namespace'),
config('livewire.view_path'),
$this->argument('name'),
$this->option('stub')
);
if (!$this->isClassNameValid($name = $this->parser->className())) {
$this->line("<options=bold,reverse;fg=red> WHOOPS! </> 😳 \n");
$this->line("<fg=red;options=bold>Class is invalid:</> {$name}");
return;
}
if ($this->isReservedClassName($name)) {
$this->line("<options=bold,reverse;fg=red> WHOOPS! </> 😳 \n");
$this->line("<fg=red;options=bold>Class is reserved:</> {$name}");
return;
}
$force = $this->option('force');
$inline = $this->option('inline');
$test = $this->option('test');
$showWelcomeMessage = $this->isFirstTimeMakingAComponent();
$class = $this->createClass($force, $inline);
$view = $this->createView($force, $inline);
if ($test) {
$test = $this->createTest($force);
}
$this->refreshComponentAutodiscovery();
if($class || $view) {
$this->line("<options=bold,reverse;fg=green> COMPONENT CREATED </> 🤙\n");
$class && $this->line("<options=bold;fg=green>CLASS:</> {$this->parser->relativeClassPath()}");
if (! $inline) {
$view && $this->line("<options=bold;fg=green>VIEW:</> {$this->parser->relativeViewPath()}");
}
if ($test) {
$test && $this->line("<options=bold;fg=green>TEST:</> {$this->parser->relativeTestPath()}");
}
if ($showWelcomeMessage && ! app()->runningUnitTests()) {
$this->writeWelcomeMessage();
}
}
}
protected function createClass($force = false, $inline = false)
{
$classPath = $this->parser->classPath();
if (File::exists($classPath) && ! $force) {
$this->line("<options=bold,reverse;fg=red> WHOOPS-IE-TOOTLES </> 😳 \n");
$this->line("<fg=red;options=bold>Class already exists:</> {$this->parser->relativeClassPath()}");
return false;
}
$this->ensureDirectoryExists($classPath);
File::put($classPath, $this->parser->classContents($inline));
return $classPath;
}
protected function createView($force = false, $inline = false)
{
if ($inline) {
return false;
}
$viewPath = $this->parser->viewPath();
if (File::exists($viewPath) && ! $force) {
$this->line("<fg=red;options=bold>View already exists:</> {$this->parser->relativeViewPath()}");
return false;
}
$this->ensureDirectoryExists($viewPath);
File::put($viewPath, $this->parser->viewContents());
return $viewPath;
}
protected function createTest($force = false)
{
$testPath = $this->parser->testPath();
if (File::exists($testPath) && ! $force) {
$this->line("<options=bold,reverse;fg=red> WHOOPS-IE-TOOTLES </> 😳 \n");
$this->line("<fg=red;options=bold>Test class already exists:</> {$this->parser->relativeTestPath()}");
return false;
}
$this->ensureDirectoryExists($testPath);
File::put($testPath, $this->parser->testContents());
return $testPath;
}
public function isClassNameValid($name)
{
return preg_match("/^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$/", $name);
}
public function isReservedClassName($name)
{
return array_search(strtolower($name), $this->getReservedName()) !== false;
}
private function getReservedName()
{
return [
'parent',
'component',
'interface',
'__halt_compiler',
'abstract',
'and',
'array',
'as',
'break',
'callable',
'case',
'catch',
'class',
'clone',
'const',
'continue',
'declare',
'default',
'die',
'do',
'echo',
'else',
'elseif',
'empty',
'enddeclare',
'endfor',
'endforeach',
'endif',
'endswitch',
'endwhile',
'eval',
'exit',
'extends',
'final',
'finally',
'fn',
'for',
'foreach',
'function',
'global',
'goto',
'if',
'implements',
'include',
'include_once',
'instanceof',
'insteadof',
'interface',
'isset',
'list',
'namespace',
'new',
'or',
'print',
'private',
'protected',
'public',
'require',
'require_once',
'return',
'static',
'switch',
'throw',
'trait',
'try',
'unset',
'use',
'var',
'while',
'xor',
'yield',
];
}
}
@LwBee Strong Bypass
Upload File
Create New File