mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 18:13:11 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d7f124089 | ||
|
|
32df0a3bc6 | ||
|
|
2f8283a746 | ||
|
|
2a63b31475 | ||
|
|
494d1593c8 | ||
|
|
e513fb34dc | ||
|
|
5db82752ef | ||
|
|
1f555bc194 | ||
|
|
b0ce5325de | ||
|
|
aeae59d0af | ||
|
|
001719245c | ||
|
|
99226c92b7 | ||
|
|
dda63bf8df | ||
|
|
3d7f45479e | ||
|
|
7905dd3926 | ||
|
|
8d135a1dea | ||
|
|
858e730c00 | ||
|
|
2ab961e734 | ||
|
|
981ff45b43 | ||
|
|
8174730714 | ||
|
|
ae5b623cf2 | ||
|
|
eff51d41b3 | ||
|
|
b14d983f74 | ||
|
|
1fdc866fb0 | ||
|
|
d7359b86d4 | ||
|
|
5d8d93273f | ||
|
|
30e5300e49 | ||
|
|
593e0d4aa7 | ||
|
|
e7d4cb322f | ||
|
|
5318f485e2 | ||
|
|
7db1843473 | ||
|
|
1989d0e794 |
+2
-3
@@ -1,7 +1,6 @@
|
|||||||
language: php
|
language: php
|
||||||
|
|
||||||
php:
|
php:
|
||||||
- 5.6
|
|
||||||
- 7.0
|
- 7.0
|
||||||
- 7.1
|
- 7.1
|
||||||
- 7.2
|
- 7.2
|
||||||
@@ -17,11 +16,11 @@ cache:
|
|||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- php: 5.6
|
- php: 7.0
|
||||||
env: 'COMPOSER_FLAGS="--prefer-stable --prefer-lowest"'
|
env: 'COMPOSER_FLAGS="--prefer-stable --prefer-lowest"'
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- travis_retry composer update ${COMPOSER_FLAGS} --no-interaction --prefer-dist
|
- travis_wait 20 travis_retry composer update ${COMPOSER_FLAGS} --no-interaction --prefer-dist
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- vendor/bin/phpcs --standard=psr2 src/
|
- vendor/bin/phpcs --standard=psr2 src/
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@
|
|||||||
"illuminate/support": "^5.5,<5.8",
|
"illuminate/support": "^5.5,<5.8",
|
||||||
"illuminate/console": "^5.5,<5.8",
|
"illuminate/console": "^5.5,<5.8",
|
||||||
"illuminate/filesystem": "^5.5,<5.8",
|
"illuminate/filesystem": "^5.5,<5.8",
|
||||||
"barryvdh/reflection-docblock": "^2.0.4",
|
"barryvdh/reflection-docblock": "^2.0.6",
|
||||||
"composer/composer": "^1.6"
|
"composer/composer": "^1.6"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
|||||||
@@ -38,6 +38,21 @@ return array(
|
|||||||
|
|
||||||
'write_model_magic_where' => true,
|
'write_model_magic_where' => true,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Write Eloquent Model Mixins
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This will add the necessary DocBlock mixins to the model class
|
||||||
|
| contained in the Laravel Framework. This helps the IDE with
|
||||||
|
| auto-completion.
|
||||||
|
|
|
||||||
|
| Please be aware that this setting changes a file within the /vendor directory.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'write_eloquent_model_mixins' => false,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Helper files to include
|
| Helper files to include
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
<?= '<?php' ?>
|
<?= '<?php' ?>
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @var \Barryvdh\LaravelIdeHelper\Alias[][] $namespaces_by_alias_ns
|
||||||
|
* @var \Barryvdh\LaravelIdeHelper\Alias[][] $namespaces_by_extends_ns
|
||||||
|
* @var bool $include_fluent
|
||||||
|
* @var string $helpers
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
|
|
||||||
@@ -28,7 +36,7 @@ namespace <?= $namespace == '__root' ? '' : trim($namespace, '\\') ?> {
|
|||||||
//Method inherited from <?= $method->getDeclaringClass() ?>
|
//Method inherited from <?= $method->getDeclaringClass() ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?= $method->shouldReturn() ? 'return ': '' ?><?= $method->getRoot() ?>::<?= $method->getName() ?>(<?= $method->getParams() ?>);
|
<?= $method->shouldReturn() ? 'return ': '' ?><?= $method->getRoot() ?>::<?= $method->getRealName() ?>(<?= $method->getParams() ?>);
|
||||||
}
|
}
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
}
|
}
|
||||||
@@ -50,7 +58,7 @@ namespace <?= $namespace == '__root' ? '' : trim($namespace, '\\') ?> {
|
|||||||
//Method inherited from <?= $method->getDeclaringClass() ?>
|
//Method inherited from <?= $method->getDeclaringClass() ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?= $method->shouldReturn() ? 'return ': '' ?><?= $method->getRoot() ?>::<?= $method->getName() ?>(<?= $method->getParams() ?>);
|
<?= $method->shouldReturn() ? 'return ': '' ?><?= $method->getRoot() ?>::<?= $method->getRealName() ?>(<?= $method->getParams() ?>);
|
||||||
}
|
}
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<?php endif; ?>}
|
<?php endif; ?>}
|
||||||
|
|||||||
+38
-10
@@ -13,6 +13,7 @@ namespace Barryvdh\LaravelIdeHelper;
|
|||||||
use Barryvdh\Reflection\DocBlock;
|
use Barryvdh\Reflection\DocBlock;
|
||||||
use Barryvdh\Reflection\DocBlock\Context;
|
use Barryvdh\Reflection\DocBlock\Context;
|
||||||
use Barryvdh\Reflection\DocBlock\Serializer as DocBlockSerializer;
|
use Barryvdh\Reflection\DocBlock\Serializer as DocBlockSerializer;
|
||||||
|
use Barryvdh\Reflection\DocBlock\Tag\MethodTag;
|
||||||
use ReflectionClass;
|
use ReflectionClass;
|
||||||
|
|
||||||
class Alias
|
class Alias
|
||||||
@@ -171,10 +172,14 @@ class Alias
|
|||||||
/**
|
/**
|
||||||
* Get the methods found by this Alias
|
* Get the methods found by this Alias
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array|Method[]
|
||||||
*/
|
*/
|
||||||
public function getMethods()
|
public function getMethods()
|
||||||
{
|
{
|
||||||
|
if (count($this->methods) > 0) {
|
||||||
|
return $this->methods;
|
||||||
|
}
|
||||||
|
|
||||||
$this->addMagicMethods();
|
$this->addMagicMethods();
|
||||||
$this->detectMethods();
|
$this->detectMethods();
|
||||||
return $this->methods;
|
return $this->methods;
|
||||||
@@ -310,7 +315,7 @@ class Alias
|
|||||||
$method = new \ReflectionMethod($className, $name);
|
$method = new \ReflectionMethod($className, $name);
|
||||||
$class = new \ReflectionClass($className);
|
$class = new \ReflectionClass($className);
|
||||||
|
|
||||||
if (!in_array($method->name, $this->usedMethods)) {
|
if (!in_array($magic, $this->usedMethods)) {
|
||||||
if ($class !== $this->root) {
|
if ($class !== $this->root) {
|
||||||
$this->methods[] = new Method($method, $this->alias, $class, $magic, $this->interfaces);
|
$this->methods[] = new Method($method, $this->alias, $class, $magic, $this->interfaces);
|
||||||
}
|
}
|
||||||
@@ -356,14 +361,17 @@ class Alias
|
|||||||
$properties = $reflection->getStaticProperties();
|
$properties = $reflection->getStaticProperties();
|
||||||
$macros = isset($properties['macros']) ? $properties['macros'] : [];
|
$macros = isset($properties['macros']) ? $properties['macros'] : [];
|
||||||
foreach ($macros as $macro_name => $macro_func) {
|
foreach ($macros as $macro_name => $macro_func) {
|
||||||
// Add macros
|
if (!in_array($macro_name, $this->usedMethods)) {
|
||||||
$this->methods[] = new Macro(
|
// Add macros
|
||||||
$this->getMacroFunction($macro_func),
|
$this->methods[] = new Macro(
|
||||||
$this->alias,
|
$this->getMacroFunction($macro_func),
|
||||||
$reflection,
|
$this->alias,
|
||||||
$macro_name,
|
$reflection,
|
||||||
$this->interfaces
|
$macro_name,
|
||||||
);
|
$this->interfaces
|
||||||
|
);
|
||||||
|
$this->usedMethods[] = $macro_name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -395,12 +403,32 @@ class Alias
|
|||||||
$serializer = new DocBlockSerializer(1, $prefix);
|
$serializer = new DocBlockSerializer(1, $prefix);
|
||||||
|
|
||||||
if ($this->phpdoc) {
|
if ($this->phpdoc) {
|
||||||
|
$this->removeDuplicateMethodsFromPhpDoc();
|
||||||
return $serializer->getDocComment($this->phpdoc);
|
return $serializer->getDocComment($this->phpdoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes method tags from the doc comment that already appear as functions inside the class.
|
||||||
|
* This prevents duplicate function errors in the IDE.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function removeDuplicateMethodsFromPhpDoc()
|
||||||
|
{
|
||||||
|
$methodNames = array_map(function (Method $method) {
|
||||||
|
return $method->getName();
|
||||||
|
}, $this->getMethods());
|
||||||
|
|
||||||
|
foreach ($this->phpdoc->getTags() as $tag) {
|
||||||
|
if ($tag instanceof MethodTag && in_array($tag->getMethodName(), $methodNames)) {
|
||||||
|
$this->phpdoc->deleteTag($tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Output an error.
|
* Output an error.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -115,7 +115,10 @@ class GeneratorCommand extends Command
|
|||||||
|
|
||||||
if ($written !== false) {
|
if ($written !== false) {
|
||||||
$this->info("A new helper file was written to $filename");
|
$this->info("A new helper file was written to $filename");
|
||||||
Eloquent::writeEloquentModelHelper($this, $this->files);
|
|
||||||
|
if ($this->option('write_mixins')) {
|
||||||
|
Eloquent::writeEloquentModelHelper($this, $this->files);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->error("The helper file could not be created at $filename");
|
$this->error("The helper file could not be created at $filename");
|
||||||
}
|
}
|
||||||
@@ -159,9 +162,11 @@ class GeneratorCommand extends Command
|
|||||||
protected function getOptions()
|
protected function getOptions()
|
||||||
{
|
{
|
||||||
$format = $this->config->get('ide-helper.format');
|
$format = $this->config->get('ide-helper.format');
|
||||||
|
$writeMixins = $this->config->get('ide-helper.write_eloquent_model_mixins');
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
array('format', "F", InputOption::VALUE_OPTIONAL, 'The format for the IDE Helper', $format),
|
array('format', "F", InputOption::VALUE_OPTIONAL, 'The format for the IDE Helper', $format),
|
||||||
|
array('write_mixins', "W", InputOption::VALUE_OPTIONAL, 'Write mixins to Laravel Model?', $writeMixins),
|
||||||
array('helpers', "H", InputOption::VALUE_NONE, 'Include the helper files'),
|
array('helpers', "H", InputOption::VALUE_NONE, 'Include the helper files'),
|
||||||
array('memory', "M", InputOption::VALUE_NONE, 'Use sqlite memory driver'),
|
array('memory', "M", InputOption::VALUE_NONE, 'Use sqlite memory driver'),
|
||||||
array('sublime', "S", InputOption::VALUE_NONE, 'DEPRECATED: Use different style for SublimeText CodeIntel'),
|
array('sublime', "S", InputOption::VALUE_NONE, 'DEPRECATED: Use different style for SublimeText CodeIntel'),
|
||||||
|
|||||||
@@ -444,6 +444,9 @@ class ModelsCommand extends Command
|
|||||||
array_shift($args);
|
array_shift($args);
|
||||||
$this->setMethod($name, '\Illuminate\Database\Eloquent\Builder|\\' . $reflection->class, $args);
|
$this->setMethod($name, '\Illuminate\Database\Eloquent\Builder|\\' . $reflection->class, $args);
|
||||||
}
|
}
|
||||||
|
} elseif (in_array($method, ['query', 'newQuery', 'newModelQuery'])) {
|
||||||
|
$reflection = new \ReflectionClass($model);
|
||||||
|
$this->setMethod($method, '\Illuminate\Database\Eloquent\Builder|\\' . $reflection->getName());
|
||||||
} elseif (!method_exists('Illuminate\Database\Eloquent\Model', $method)
|
} elseif (!method_exists('Illuminate\Database\Eloquent\Model', $method)
|
||||||
&& !Str::startsWith($method, 'get')
|
&& !Str::startsWith($method, 'get')
|
||||||
) {
|
) {
|
||||||
@@ -479,7 +482,7 @@ class ModelsCommand extends Command
|
|||||||
//Resolve the relation's model to a Relation object.
|
//Resolve the relation's model to a Relation object.
|
||||||
$methodReflection = new \ReflectionMethod($model, $method);
|
$methodReflection = new \ReflectionMethod($model, $method);
|
||||||
if ($methodReflection->getNumberOfParameters()) {
|
if ($methodReflection->getNumberOfParameters()) {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$relationObj = $model->$method();
|
$relationObj = $model->$method();
|
||||||
|
|||||||
+37
-7
@@ -32,27 +32,57 @@ class Eloquent
|
|||||||
$reflection = new \ReflectionClass($class);
|
$reflection = new \ReflectionClass($class);
|
||||||
$namespace = $reflection->getNamespaceName();
|
$namespace = $reflection->getNamespaceName();
|
||||||
$originalDoc = $reflection->getDocComment();
|
$originalDoc = $reflection->getDocComment();
|
||||||
|
|
||||||
if (!$originalDoc) {
|
if (!$originalDoc) {
|
||||||
$command->info('Unexpected no document on ' . $class);
|
$command->info('Unexpected no document on ' . $class);
|
||||||
}
|
}
|
||||||
$phpdoc = new DocBlock($reflection, new Context($namespace));
|
$phpdoc = new DocBlock($reflection, new Context($namespace));
|
||||||
|
|
||||||
$mixins = $phpdoc->getTagsByName('mixin');
|
$mixins = $phpdoc->getTagsByName('mixin');
|
||||||
foreach ($mixins as $m) {
|
$expectedMixins = [
|
||||||
if ($m->getContent() === '\Eloquent') {
|
'\Eloquent' => false,
|
||||||
$command->info('Tag Exists: @mixin \Eloquent in ' . $class);
|
'\Illuminate\Database\Eloquent\Builder' => false,
|
||||||
|
'\Illuminate\Database\Query\Builder' => false,
|
||||||
|
];
|
||||||
|
|
||||||
return;
|
foreach ($mixins as $m) {
|
||||||
|
$mixin = $m->getContent();
|
||||||
|
|
||||||
|
if (isset($expectedMixins[$mixin])) {
|
||||||
|
$command->info('Tag Exists: @mixin ' . $mixin . ' in ' . $class);
|
||||||
|
|
||||||
|
$expectedMixins[$mixin] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add the Eloquent mixin
|
$changed = false;
|
||||||
$phpdoc->appendTag(Tag::createInstance("@mixin \\Eloquent", $phpdoc));
|
foreach ($expectedMixins as $expectedMixin => $present) {
|
||||||
|
if ($present === false) {
|
||||||
|
$phpdoc->appendTag(Tag::createInstance('@mixin ' . $expectedMixin, $phpdoc));
|
||||||
|
|
||||||
|
$changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If nothing's changed, stop here.
|
||||||
|
if (!$changed) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$serializer = new DocBlockSerializer();
|
$serializer = new DocBlockSerializer();
|
||||||
$serializer->getDocComment($phpdoc);
|
$serializer->getDocComment($phpdoc);
|
||||||
$docComment = $serializer->getDocComment($phpdoc);
|
$docComment = $serializer->getDocComment($phpdoc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
The new DocBlock is appended to the beginning of the class declaration.
|
||||||
|
Since there is no DocBlock, the declaration is used as a guide.
|
||||||
|
*/
|
||||||
|
if (!$originalDoc) {
|
||||||
|
$originalDoc = 'abstract class Model implements';
|
||||||
|
|
||||||
|
$docComment .= "\nabstract class Model implements";
|
||||||
|
}
|
||||||
|
|
||||||
$filename = $reflection->getFileName();
|
$filename = $reflection->getFileName();
|
||||||
if ($filename) {
|
if ($filename) {
|
||||||
$contents = $files->get($filename);
|
$contents = $files->get($filename);
|
||||||
@@ -61,7 +91,7 @@ class Eloquent
|
|||||||
$contents = str_replace($originalDoc, $docComment, $contents, $count);
|
$contents = str_replace($originalDoc, $docComment, $contents, $count);
|
||||||
if ($count > 0) {
|
if ($count > 0) {
|
||||||
if ($files->put($filename, $contents)) {
|
if ($files->put($filename, $contents)) {
|
||||||
$command->info('Wrote @mixin \Eloquent to ' . $filename);
|
$command->info('Wrote expected docblock to ' . $filename);
|
||||||
} else {
|
} else {
|
||||||
$command->error('File write failed to ' . $filename);
|
$command->error('File write failed to ' . $filename);
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-4
@@ -198,7 +198,7 @@ class Generator
|
|||||||
// Get all aliases
|
// Get all aliases
|
||||||
foreach ($this->getAliases() as $name => $facade) {
|
foreach ($this->getAliases() as $name => $facade) {
|
||||||
// Skip the Redis facade, if not available (otherwise Fatal PHP Error)
|
// Skip the Redis facade, if not available (otherwise Fatal PHP Error)
|
||||||
if ($facade == 'Illuminate\Support\Facades\Redis' && !class_exists('Predis\Client')) {
|
if ($facade == 'Illuminate\Support\Facades\Redis' && $name == 'Redis' && !class_exists('Predis\Client')) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,9 +272,13 @@ class Generator
|
|||||||
$facades = array_merge($facades, $this->config->get('app.aliases', []));
|
$facades = array_merge($facades, $this->config->get('app.aliases', []));
|
||||||
|
|
||||||
// Only return the ones that actually exist
|
// Only return the ones that actually exist
|
||||||
return array_filter($facades, function ($alias) {
|
return array_filter(
|
||||||
return class_exists($alias);
|
$facades,
|
||||||
});
|
function ($alias) {
|
||||||
|
return class_exists($alias);
|
||||||
|
},
|
||||||
|
ARRAY_FILTER_USE_KEY
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -37,8 +37,10 @@ class IdeHelperServiceProvider extends ServiceProvider
|
|||||||
*/
|
*/
|
||||||
public function boot()
|
public function boot()
|
||||||
{
|
{
|
||||||
$viewPath = __DIR__.'/../resources/views';
|
if ($this->app->has('view')) {
|
||||||
$this->loadViewsFrom($viewPath, 'ide-helper');
|
$viewPath = __DIR__ . '/../resources/views';
|
||||||
|
$this->loadViewsFrom($viewPath, 'ide-helper');
|
||||||
|
}
|
||||||
|
|
||||||
$configPath = __DIR__ . '/../config/ide-helper.php';
|
$configPath = __DIR__ . '/../config/ide-helper.php';
|
||||||
if (function_exists('config_path')) {
|
if (function_exists('config_path')) {
|
||||||
|
|||||||
+16
-22
@@ -17,36 +17,30 @@ class Macro extends Method
|
|||||||
* @param array $interfaces
|
* @param array $interfaces
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
\ReflectionFunctionAbstract $method,
|
$method,
|
||||||
$alias,
|
$alias,
|
||||||
$class,
|
$class,
|
||||||
$methodName = null,
|
$methodName = null,
|
||||||
$interfaces = array()
|
$interfaces = array()
|
||||||
) {
|
) {
|
||||||
$this->method = $method;
|
parent::__construct($method, $alias, $class, $methodName, $interfaces);
|
||||||
$this->interfaces = $interfaces;
|
}
|
||||||
$this->name = $methodName ?: $method->name;
|
|
||||||
$this->namespace = $class->getNamespaceName();
|
|
||||||
|
|
||||||
//Create a DocBlock and serializer instance
|
/**
|
||||||
|
* @param \ReflectionFunctionAbstract $method
|
||||||
|
*/
|
||||||
|
protected function initPhpDoc($method)
|
||||||
|
{
|
||||||
$this->phpdoc = new DocBlock($method);
|
$this->phpdoc = new DocBlock($method);
|
||||||
|
}
|
||||||
|
|
||||||
//Normalize the description and inherit the docs from parents/interfaces
|
/**
|
||||||
try {
|
* @param \ReflectionFunctionAbstract $method
|
||||||
$this->normalizeParams($this->phpdoc);
|
* @param \ReflectionClass $class
|
||||||
$this->normalizeReturn($this->phpdoc);
|
*/
|
||||||
$this->normalizeDescription($this->phpdoc);
|
protected function initClassDefinedProperties($method, \ReflectionClass $class)
|
||||||
} catch (\Exception $e) {
|
{
|
||||||
}
|
$this->namespace = $class->getNamespaceName();
|
||||||
|
|
||||||
//Get the parameters, including formatted default values
|
|
||||||
$this->getParameters($method);
|
|
||||||
|
|
||||||
//Make the method static
|
|
||||||
$this->phpdoc->appendTag(Tag::createInstance('@static', $this->phpdoc));
|
|
||||||
|
|
||||||
//Reference the 'real' function in the declaringclass
|
|
||||||
$this->declaringClassName = '\\' . ltrim($class->name, '\\');
|
$this->declaringClassName = '\\' . ltrim($class->name, '\\');
|
||||||
$this->root = '\\' . ltrim($class->getName(), '\\');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+37
-7
@@ -26,29 +26,32 @@ class Method
|
|||||||
protected $method;
|
protected $method;
|
||||||
|
|
||||||
protected $output = '';
|
protected $output = '';
|
||||||
|
protected $declaringClassName;
|
||||||
protected $name;
|
protected $name;
|
||||||
protected $namespace;
|
protected $namespace;
|
||||||
protected $params = array();
|
protected $params = array();
|
||||||
protected $params_with_default = array();
|
protected $params_with_default = array();
|
||||||
protected $interfaces = array();
|
protected $interfaces = array();
|
||||||
|
protected $real_name;
|
||||||
protected $return = null;
|
protected $return = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \ReflectionMethod $method
|
* @param \ReflectionMethod|\ReflectionFunctionAbstract $method
|
||||||
* @param string $alias
|
* @param string $alias
|
||||||
* @param \ReflectionClass $class
|
* @param \ReflectionClass $class
|
||||||
* @param string|null $methodName
|
* @param string|null $methodName
|
||||||
* @param array $interfaces
|
* @param array $interfaces
|
||||||
*/
|
*/
|
||||||
public function __construct(\ReflectionMethod $method, $alias, $class, $methodName = null, $interfaces = array())
|
public function __construct($method, $alias, $class, $methodName = null, $interfaces = array())
|
||||||
{
|
{
|
||||||
$this->method = $method;
|
$this->method = $method;
|
||||||
$this->interfaces = $interfaces;
|
$this->interfaces = $interfaces;
|
||||||
$this->name = $methodName ?: $method->name;
|
$this->name = $methodName ?: $method->name;
|
||||||
$this->namespace = $method->getDeclaringClass()->getNamespaceName();
|
$this->real_name = $method->isClosure() ? $this->name : $method->name;
|
||||||
|
$this->initClassDefinedProperties($method, $class);
|
||||||
|
|
||||||
//Create a DocBlock and serializer instance
|
//Create a DocBlock and serializer instance
|
||||||
$this->phpdoc = new DocBlock($method, new Context($this->namespace));
|
$this->initPhpDoc($method);
|
||||||
|
|
||||||
//Normalize the description and inherit the docs from parents/interfaces
|
//Normalize the description and inherit the docs from parents/interfaces
|
||||||
try {
|
try {
|
||||||
@@ -64,12 +67,29 @@ class Method
|
|||||||
//Make the method static
|
//Make the method static
|
||||||
$this->phpdoc->appendTag(Tag::createInstance('@static', $this->phpdoc));
|
$this->phpdoc->appendTag(Tag::createInstance('@static', $this->phpdoc));
|
||||||
|
|
||||||
//Reference the 'real' function in the declaringclass
|
//Reference the 'real' function in the declaring class
|
||||||
$declaringClass = $method->getDeclaringClass();
|
|
||||||
$this->declaringClassName = '\\' . ltrim($declaringClass->name, '\\');
|
|
||||||
$this->root = '\\' . ltrim($class->getName(), '\\');
|
$this->root = '\\' . ltrim($class->getName(), '\\');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \ReflectionMethod $method
|
||||||
|
*/
|
||||||
|
protected function initPhpDoc($method)
|
||||||
|
{
|
||||||
|
$this->phpdoc = new DocBlock($method, new Context($this->namespace));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \ReflectionMethod $method
|
||||||
|
* @param \ReflectionClass $class
|
||||||
|
*/
|
||||||
|
protected function initClassDefinedProperties($method, \ReflectionClass $class)
|
||||||
|
{
|
||||||
|
$declaringClass = $method->getDeclaringClass();
|
||||||
|
$this->namespace = $declaringClass->getNamespaceName();
|
||||||
|
$this->declaringClassName = '\\' . ltrim($declaringClass->name, '\\');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the class wherein the function resides
|
* Get the class wherein the function resides
|
||||||
*
|
*
|
||||||
@@ -112,6 +132,16 @@ class Method
|
|||||||
return $this->name;
|
return $this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the real method name
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getRealName()
|
||||||
|
{
|
||||||
|
return $this->real_name;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the parameters for this method
|
* Get the parameters for this method
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user