From 8287f02afae4e6fdece2e35cc075f4f172af1550 Mon Sep 17 00:00:00 2001 From: Danny van der Sluijs Date: Fri, 28 Aug 2020 09:15:43 +0200 Subject: [PATCH] Fix typos; Optimise if-else branches (#1009) --- composer.json | 1 + src/Alias.php | 43 ++++---- src/Console/GeneratorCommand.php | 69 ++++++------- src/Console/ModelsCommand.php | 162 ++++++++++++++----------------- src/Eloquent.php | 40 ++++---- src/Macro.php | 1 - src/Method.php | 54 ++++++----- 7 files changed, 181 insertions(+), 189 deletions(-) diff --git a/composer.json b/composer.json index 9787c2c..a4f27d0 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,7 @@ ], "require": { "php": ">=7.2", + "ext-json": "*", "barryvdh/reflection-docblock": "^2.0.6", "composer/composer": "^1.6 || ^2.0@dev", "doctrine/dbal": "~2.3", diff --git a/src/Alias.php b/src/Alias.php index 464b259..5167b5e 100644 --- a/src/Alias.php +++ b/src/Alias.php @@ -63,12 +63,12 @@ class Alias $this->detectRoot(); - if ((!$this->isTrait() && $this->root)) { - $this->valid = true; - } else { + if (!$this->root || $this->isTrait()) { return; } + $this->valid = true; + $this->addClass($this->root); $this->detectFake(); $this->detectNamespace(); @@ -201,13 +201,13 @@ class Alias protected function detectFake() { $facade = $this->facade; - + if (!method_exists($facade, 'fake')) { return; } $real = $facade::getFacadeRoot(); - + try { $facade::fake(); $fake = $facade::getFacadeRoot(); @@ -306,10 +306,7 @@ class Alias protected function isTrait() { // Check if the facade is not a Trait - if (function_exists('trait_exists') && trait_exists($this->facade)) { - return true; - } - return false; + return trait_exists($this->facade); } /** @@ -416,22 +413,22 @@ class Alias { $serializer = new DocBlockSerializer(1, $prefix); - if ($this->phpdoc) { - if ($this->config->get('ide-helper.include_class_docblocks')) { - // if a class doesn't expose any DocBlock tags - // we can perform reflection on the class and - // add in the original class DocBlock - if (count($this->phpdoc->getTags()) === 0) { - $class = new ReflectionClass($this->root); - $this->phpdoc = new DocBlock($class->getDocComment()); - } - } - - $this->removeDuplicateMethodsFromPhpDoc(); - return $serializer->getDocComment($this->phpdoc); + if (!$this->phpdoc) { + return ''; } - return ''; + if ($this->config->get('ide-helper.include_class_docblocks')) { + // if a class doesn't expose any DocBlock tags + // we can perform reflection on the class and + // add in the original class DocBlock + if (count($this->phpdoc->getTags()) === 0) { + $class = new ReflectionClass($this->root); + $this->phpdoc = new DocBlock($class->getDocComment()); + } + } + + $this->removeDuplicateMethodsFromPhpDoc(); + return $serializer->getDocComment($this->phpdoc); } /** diff --git a/src/Console/GeneratorCommand.php b/src/Console/GeneratorCommand.php index 6de5012..37121b6 100644 --- a/src/Console/GeneratorCommand.php +++ b/src/Console/GeneratorCommand.php @@ -85,46 +85,47 @@ class GeneratorCommand extends Command $this->error( 'Error generating IDE Helper: first delete your compiled file (php artisan clear-compiled)' ); + return; + } + + $filename = $this->argument('filename'); + $format = $this->option('format'); + + // Strip the php extension + if (substr($filename, -4, 4) === '.php') { + $filename = substr($filename, 0, -4); + } + + $filename .= '.' . $format; + + if ($this->option('memory')) { + $this->useMemoryDriver(); + } + + + $helpers = ''; + if ($this->option('helpers') || ($this->config->get('ide-helper.include_helpers'))) { + foreach ($this->config->get('ide-helper.helper_files', array()) as $helper) { + if (file_exists($helper)) { + $helpers .= str_replace(array(''), '', $this->files->get($helper)); + } + } } else { - $filename = $this->argument('filename'); - $format = $this->option('format'); - - // Strip the php extension - if (substr($filename, -4, 4) == '.php') { - $filename = substr($filename, 0, -4); - } - - $filename .= '.' . $format; - - if ($this->option('memory')) { - $this->useMemoryDriver(); - } - - $helpers = ''; - if ($this->option('helpers') || ($this->config->get('ide-helper.include_helpers'))) { - foreach ($this->config->get('ide-helper.helper_files', array()) as $helper) { - if (file_exists($helper)) { - $helpers .= str_replace(array(''), '', $this->files->get($helper)); - } - } - } else { - $helpers = ''; - } + } - $generator = new Generator($this->config, $this->view, $this->getOutput(), $helpers); - $content = $generator->generate($format); - $written = $this->files->put($filename, $content); + $generator = new Generator($this->config, $this->view, $this->getOutput(), $helpers); + $content = $generator->generate($format); + $written = $this->files->put($filename, $content); - if ($written !== false) { - $this->info("A new helper file was written to $filename"); + if ($written !== false) { + $this->info("A new helper file was written to $filename"); - if ($this->option('write_mixins')) { - Eloquent::writeEloquentModelHelper($this, $this->files); - } - } else { - $this->error("The helper file could not be created at $filename"); + if ($this->option('write_mixins')) { + Eloquent::writeEloquentModelHelper($this, $this->files); } + } else { + $this->error("The helper file could not be created at $filename"); } } diff --git a/src/Console/ModelsCommand.php b/src/Console/ModelsCommand.php index b56e6a2..974f705 100644 --- a/src/Console/ModelsCommand.php +++ b/src/Console/ModelsCommand.php @@ -71,7 +71,7 @@ class ModelsCommand extends Command protected $nullableColumns = []; /** - * During initializtion we use Laravels Date Facade to + * During initialization we use Laravels Date Facade to * determine the actual date class and store it here. * * @var string @@ -224,9 +224,7 @@ class ModelsCommand extends Command continue; } - if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) { - $this->comment("Loading model '$name'"); - } + $this->comment("Loading model '$name'", OutputInterface::VERBOSITY_VERBOSE); if (!$reflectionClass->IsInstantiable()) { // ignore abstract class or interface @@ -346,20 +344,20 @@ class ModelsCommand extends Command if (!isset($this->properties[$name])) { continue; - } else { - $realType = $this->checkForCustomLaravelCasts($realType); - $realType = $this->getTypeOverride($realType); - $this->properties[$name]['type'] = $this->getTypeInModel($model, $realType); + } - if (isset($this->nullableColumns[$name])) { - $this->properties[$name]['type'] .= '|null'; - } + $realType = $this->checkForCustomLaravelCasts($realType); + $realType = $this->getTypeOverride($realType); + $this->properties[$name]['type'] = $this->getTypeInModel($model, $realType); + + if (isset($this->nullableColumns[$name])) { + $this->properties[$name]['type'] .= '|null'; } } } /** - * Returns the overide type for the give type. + * Returns the override type for the give type. * * @param string $type * @return string|null @@ -368,7 +366,7 @@ class ModelsCommand extends Command { $typeOverrides = $this->laravel['config']->get('ide-helper.type_overrides', array()); - return isset($typeOverrides[$type]) ? $typeOverrides[$type] : $type; + return $typeOverrides[$type] ?? $type; } /** @@ -396,70 +394,72 @@ class ModelsCommand extends Command $columns = $schema->listTableColumns($table, $database); - if ($columns) { - foreach ($columns as $column) { - $name = $column->getName(); - if (in_array($name, $model->getDates())) { - $type = $this->dateClass; - } else { - $type = $column->getType()->getName(); - switch ($type) { - case 'string': - case 'text': - case 'date': - case 'time': - case 'guid': - case 'datetimetz': - case 'datetime': - case 'decimal': - $type = 'string'; - break; - case 'integer': - case 'bigint': - case 'smallint': - $type = 'integer'; - break; - case 'boolean': - switch (config('database.default')) { - case 'sqlite': - case 'mysql': - $type = 'integer'; - break; - default: - $type = 'boolean'; - break; - } - break; - case 'float': - $type = 'float'; - break; - default: - $type = 'mixed'; - break; - } - } + if (!$columns) { + return; + } - $comment = $column->getComment(); - if (!$column->getNotnull()) { - $this->nullableColumns[$name] = true; + foreach ($columns as $column) { + $name = $column->getName(); + if (in_array($name, $model->getDates())) { + $type = $this->dateClass; + } else { + $type = $column->getType()->getName(); + switch ($type) { + case 'string': + case 'text': + case 'date': + case 'time': + case 'guid': + case 'datetimetz': + case 'datetime': + case 'decimal': + $type = 'string'; + break; + case 'integer': + case 'bigint': + case 'smallint': + $type = 'integer'; + break; + case 'boolean': + switch (config('database.default')) { + case 'sqlite': + case 'mysql': + $type = 'integer'; + break; + default: + $type = 'boolean'; + break; + } + break; + case 'float': + $type = 'float'; + break; + default: + $type = 'mixed'; + break; } - $this->setProperty( - $name, - $this->getTypeInModel($model, $type), - true, - true, - $comment, - !$column->getNotnull() + } + + $comment = $column->getComment(); + if (!$column->getNotnull()) { + $this->nullableColumns[$name] = true; + } + $this->setProperty( + $name, + $this->getTypeInModel($model, $type), + true, + true, + $comment, + !$column->getNotnull() + ); + if ($this->write_model_magic_where) { + $this->setMethod( + Str::camel("where_" . $name), + $this->getClassNameInDestinationFile($model, \Illuminate\Database\Eloquent\Builder::class) + . '|' + . $this->getClassNameInDestinationFile($model, get_class($model)), + array('$value') ); - if ($this->write_model_magic_where) { - $this->setMethod( - Str::camel("where_" . $name), - $this->getClassNameInDestinationFile($model, \Illuminate\Database\Eloquent\Builder::class) - . '|' - . $this->getClassNameInDestinationFile($model, get_class($model)), - array('$value') - ); - } } } } @@ -856,14 +856,12 @@ class ModelsCommand extends Command */ public function getParameters($method) { - //Loop through the default values for paremeters, and make the correct output string - $params = array(); + //Loop through the default values for parameters, and make the correct output string $paramsWithDefault = array(); /** @var \ReflectionParameter $param */ foreach ($method->getParameters() as $param) { $paramClass = $param->getClass(); $paramStr = (!is_null($paramClass) ? '\\' . $paramClass->getName() . ' ' : '') . '$' . $param->getName(); - $params[] = $paramStr; if ($param->isOptional() && $param->isDefaultValueAvailable()) { $default = $param->getDefaultValue(); if (is_bool($default)) { @@ -1046,11 +1044,6 @@ class ModelsCommand extends Command return $type; } - /** - * @param object|ReflectionClass $model - * @param string $type - * @return string - */ protected function getTypeInModel(object $model, ?string $type): ?string { if ($type === null) { @@ -1064,11 +1057,6 @@ class ModelsCommand extends Command return $type; } - /** - * @param object|ReflectionClass $model - * @param string $className - * @return string - */ protected function getClassNameInDestinationFile(object $model, string $className): string { $reflection = $model instanceof ReflectionClass diff --git a/src/Eloquent.php b/src/Eloquent.php index e2125e9..3a11378 100644 --- a/src/Eloquent.php +++ b/src/Eloquent.php @@ -85,25 +85,29 @@ class Eloquent } $filename = $reflection->getFileName(); - if ($filename) { - $contents = $files->get($filename); - if ($contents) { - $count = 0; - $contents = str_replace($originalDoc, $docComment, $contents, $count); - if ($count > 0) { - if ($files->put($filename, $contents)) { - $command->info('Wrote expected docblock to ' . $filename); - } else { - $command->error('File write failed to ' . $filename); - } - } else { - $command->error('Content did not change ' . $contents); - } - } else { - $command->error('No file contents found ' . $filename); - } - } else { + if (!$filename) { $command->error('Filename not found ' . $class); + return; } + + $contents = $files->get($filename); + if (!$contents) { + $command->error('No file contents found ' . $filename); + return; + } + + $count = 0; + $contents = str_replace($originalDoc, $docComment, $contents, $count); + if ($count <= 0) { + $command->error('Content did not change ' . $contents); + return; + } + + if (!$files->put($filename, $contents)) { + $command->error('File write failed to ' . $filename); + return; + } + + $command->info('Wrote expected docblock to ' . $filename); } } diff --git a/src/Macro.php b/src/Macro.php index 95f214e..7e88b22 100644 --- a/src/Macro.php +++ b/src/Macro.php @@ -3,7 +3,6 @@ namespace Barryvdh\LaravelIdeHelper; use Barryvdh\Reflection\DocBlock; -use Barryvdh\Reflection\DocBlock\Tag; class Macro extends Method { diff --git a/src/Method.php b/src/Method.php index 2917906..c66777b 100644 --- a/src/Method.php +++ b/src/Method.php @@ -251,35 +251,37 @@ class Method */ protected function normalizeReturn(DocBlock $phpdoc) { - //Get the return type and adjust them for beter autocomplete + //Get the return type and adjust them for better autocomplete $returnTags = $phpdoc->getTagsByName('return'); - if ($returnTags) { - /** @var ReturnTag $tag */ - $tag = reset($returnTags); - // Get the expanded type - $returnValue = $tag->getType(); - // Replace the interfaces - foreach ($this->interfaces as $interface => $real) { - $returnValue = str_replace($interface, $real, $returnValue); - } - - // Set the changed content - $tag->setContent($returnValue . ' ' . $tag->getDescription()); - $this->return = $returnValue; - - if ($tag->getType() === '$this') { - Str::contains($this->root, Builder::class) - ? $tag->setType($this->root . '|static') - : $tag->setType($this->root); - } - } else { + if (count($returnTags) === 0) { $this->return = null; + return; + } + + /** @var ReturnTag $tag */ + $tag = reset($returnTags); + // Get the expanded type + $returnValue = $tag->getType(); + + // Replace the interfaces + foreach ($this->interfaces as $interface => $real) { + $returnValue = str_replace($interface, $real, $returnValue); + } + + // Set the changed content + $tag->setContent($returnValue . ' ' . $tag->getDescription()); + $this->return = $returnValue; + + if ($tag->getType() === '$this') { + Str::contains($this->root, Builder::class) + ? $tag->setType($this->root . '|static') + : $tag->setType($this->root); } } /** - * Convert keywwords that are incorrect. + * Convert keywords that are incorrect. * * @param string $string * @return string @@ -311,11 +313,11 @@ class Method * Get the parameters and format them correctly * * @param \ReflectionMethod $method - * @return array + * @return void */ public function getParameters($method) { - //Loop through the default values for paremeters, and make the correct output string + //Loop through the default values for parameters, and make the correct output string $params = array(); $paramsWithDefault = array(); foreach ($method->getParameters() as $param) { @@ -366,9 +368,9 @@ class Method if (strpos($phpdoc->getText(), '{@inheritdoc}') !== false) { //Not at the end yet, try another parent/interface.. return $this->getInheritDoc($method); - } else { - return $phpdoc; } + + return $phpdoc; } } }