mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 18:13:11 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
692b223e94 | ||
|
|
f321828778 | ||
|
|
6eb797f5ff | ||
|
|
604d327277 | ||
|
|
6ed5367f6b | ||
|
|
8c339bd6b0 | ||
|
|
52b9b52926 | ||
|
|
f909c82fcc | ||
|
|
e88c3669b7 | ||
|
|
5bd7eeda23 | ||
|
|
dae0b55bef | ||
|
|
3f9831c5cf | ||
|
|
2cc277440a | ||
|
|
14eab5ef84 | ||
|
|
c94012232f | ||
|
|
b9685a1f83 | ||
|
|
7bc74b1844 | ||
|
|
cfa0333446 | ||
|
|
5c6fa1d43f | ||
|
|
23db0e06ca | ||
|
|
52b3accd70 | ||
|
|
cc07cd3b2c | ||
|
|
3113f58f45 | ||
|
|
d00dc62ed6 | ||
|
|
073d90b791 | ||
|
|
5d4af73c29 | ||
|
|
39ffaa62f4 | ||
|
|
231e125821 | ||
|
|
f446326967 | ||
|
|
57dc033061 | ||
|
|
e2b59c6cb5 | ||
|
|
736f2f387e | ||
|
|
486d9d9c4d | ||
|
|
ac8b868261 | ||
|
|
c0eb7e2d7e | ||
|
|
89a17fc7b9 | ||
|
|
ec43d4e65b | ||
|
|
03cc70759b | ||
|
|
f94743fda5 | ||
|
|
3eabba3e5d | ||
|
|
f2de8d3c65 | ||
|
|
10e16a0bdc | ||
|
|
f135845100 | ||
|
|
3c54b17760 |
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"providers": [
|
"providers": [
|
||||||
"Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider"
|
"Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
## Laravel IDE Helper Generator
|
## Laravel IDE Helper Generator
|
||||||
[](https://packagist.org/packages/barryvdh/laravel-ide-helper) [](https://packagist.org/packages/barryvdh/laravel-ide-helper)
|
[](https://packagist.org/packages/barryvdh/laravel-ide-helper) [](https://packagist.org/packages/barryvdh/laravel-ide-helper)
|
||||||
|
|
||||||
|
### For Laravel 5, check the [2.0 branch](https://github.com/barryvdh/laravel-ide-helper)
|
||||||
|
|
||||||
### Complete phpDocs, directly from the source
|
### Complete phpDocs, directly from the source
|
||||||
|
|
||||||
_Checkout [this Laracasts video](https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/15) for a quick introduction/explanation!_
|
_Checkout [this Laracasts video](https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/15) for a quick introduction/explanation!_
|
||||||
@@ -12,11 +14,27 @@ If you don't want to generate it, you can add a pre-generated file to the root f
|
|||||||
|
|
||||||
Note: You do need CodeIntel for Sublime Text: https://github.com/SublimeCodeIntel/SublimeCodeIntel
|
Note: You do need CodeIntel for Sublime Text: https://github.com/SublimeCodeIntel/SublimeCodeIntel
|
||||||
|
|
||||||
|
### New: PhpStorm Meta for Container instances
|
||||||
|
|
||||||
|
It's possible to generate a PhpStorm meta file, to [add support for factory design pattern](https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata). For Laravel, this means we can make PhpStorm understand what kind of object we are resolving from the IoC Container. For example, `events` will return ann `Illuminate\Events\Dispatcher` object, so with the meta file you can call `app('events')` and it will autocomplete the Dispatcher methods.
|
||||||
|
|
||||||
|
php artisan ide-helper:meta
|
||||||
|
|
||||||
|
app('events')->fire();
|
||||||
|
\App::make('events')->fire();
|
||||||
|
|
||||||
|
/** @var \Illuminate\Foundation\Application $app */
|
||||||
|
$app->make('events')->fire();
|
||||||
|
|
||||||
|
Pre-generated example: https://gist.github.com/barryvdh/bb6ffc5d11e0a75dba67
|
||||||
|
|
||||||
|
> Note: You might need to restart PhpStorm and make sure `.phpstorm.meta.php` is indexed.
|
||||||
|
|
||||||
### Automatic phpDoc generation for Laravel Facades
|
### Automatic phpDoc generation for Laravel Facades
|
||||||
|
|
||||||
Require this package in your composer.json and run composer update (or run `composer require barryvdh/laravel-ide-helper:1.*` directly):
|
Require this package with composer using the following command:
|
||||||
|
|
||||||
"barryvdh/laravel-ide-helper": "1.*"
|
composer require barryvdh/laravel-ide-helper ~1.11
|
||||||
|
|
||||||
After updating composer, add the ServiceProvider to the providers array in app/config/app.php
|
After updating composer, add the ServiceProvider to the providers array in app/config/app.php
|
||||||
|
|
||||||
@@ -34,7 +52,7 @@ You can configure your composer.json to do this after each commit:
|
|||||||
"post-update-cmd":[
|
"post-update-cmd":[
|
||||||
"php artisan clear-compiled",
|
"php artisan clear-compiled",
|
||||||
"php artisan ide-helper:generate",
|
"php artisan ide-helper:generate",
|
||||||
"php artisan optimize",
|
"php artisan optimize"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -50,7 +68,6 @@ You can use a in-memory sqlite driver, using the -M option.
|
|||||||
You can choose to include helper files. This is not enabled by default, but you can override this with the --helpers (-H) option.
|
You can choose to include helper files. This is not enabled by default, but you can override this with the --helpers (-H) option.
|
||||||
The Illuminate/Support/helpers.php is already set-up, but you can add/remove your own files in the config file.
|
The Illuminate/Support/helpers.php is already set-up, but you can add/remove your own files in the config file.
|
||||||
|
|
||||||
|
|
||||||
### Automatic phpDocs for Models
|
### Automatic phpDocs for Models
|
||||||
|
|
||||||
> **Note:** Since v1.10 you need to require `doctrine/dbal: ~2.3` in your own composer.json.
|
> **Note:** Since v1.10 you need to require `doctrine/dbal: ~2.3` in your own composer.json.
|
||||||
|
|||||||
@@ -0,0 +1,109 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Laravel IDE Helper Generator
|
||||||
|
*
|
||||||
|
* @author Barry vd. Heuvel <[email protected]>
|
||||||
|
* @copyright 2015 Barry vd. Heuvel / Fruitcake Studio (http://www.fruitcakestudio.nl)
|
||||||
|
* @license http://www.opensource.org/licenses/mit-license.php MIT
|
||||||
|
* @link https://github.com/barryvdh/laravel-ide-helper
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Console;
|
||||||
|
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A command to generate phpstorm meta data
|
||||||
|
*
|
||||||
|
* @author Barry vd. Heuvel <[email protected]>
|
||||||
|
*/
|
||||||
|
class MetaCommand extends Command {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command name.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $name = 'ide-helper:meta';
|
||||||
|
protected $filename = '.phpstorm.meta.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = 'Generate metadata for PhpStorm';
|
||||||
|
|
||||||
|
/** @var \Illuminate\Filesystem\Filesystem */
|
||||||
|
protected $files;
|
||||||
|
|
||||||
|
/** @var \Illuminate\View\Factory */
|
||||||
|
protected $view;
|
||||||
|
|
||||||
|
protected $methods = array(
|
||||||
|
'\Illuminate\Foundation\Application::make',
|
||||||
|
'\Illuminate\Container\Container::make',
|
||||||
|
'\App::make',
|
||||||
|
'app',
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Filesystem\Filesystem $files
|
||||||
|
* @param \Illuminate\View\Factory $view
|
||||||
|
*/
|
||||||
|
public function __construct($files, $view) {
|
||||||
|
$this->files = $files;
|
||||||
|
$this->view = $view;
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function fire()
|
||||||
|
{
|
||||||
|
$filename = $this->option('filename');
|
||||||
|
|
||||||
|
$bindings = array();
|
||||||
|
|
||||||
|
foreach ($this->laravel->getBindings() as $abstract => $options) {
|
||||||
|
try {
|
||||||
|
$concrete = $this->laravel->make($abstract);
|
||||||
|
if (is_object($concrete)) {
|
||||||
|
$bindings[$abstract] = get_class($concrete);
|
||||||
|
}
|
||||||
|
}catch (\Exception $e) {
|
||||||
|
$this->error("Cannot make $abstract: ".$e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$content = $this->view->make('laravel-ide-helper::meta', array(
|
||||||
|
'bindings' => $bindings,
|
||||||
|
'methods' => $this->methods,
|
||||||
|
))->render();
|
||||||
|
|
||||||
|
$written = $this->files->put($filename, $content);
|
||||||
|
|
||||||
|
if ($written !== false) {
|
||||||
|
$this->info("A new meta file was written to $filename");
|
||||||
|
} else {
|
||||||
|
$this->error("The meta file could not be created at $filename");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the console command options.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function getOptions()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('filename', 'F', InputOption::VALUE_OPTIONAL, 'The path to the meta file', $this->filename),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -150,8 +150,6 @@ class ModelsCommand extends Command
|
|||||||
if (in_array($name, $ignore)) {
|
if (in_array($name, $ignore)) {
|
||||||
$this->comment("Ignoring model '$name'");
|
$this->comment("Ignoring model '$name'");
|
||||||
continue;
|
continue;
|
||||||
} else {
|
|
||||||
$this->comment("Loading model '$name'");
|
|
||||||
}
|
}
|
||||||
$this->properties = array();
|
$this->properties = array();
|
||||||
$this->methods = array();
|
$this->methods = array();
|
||||||
@@ -159,33 +157,35 @@ class ModelsCommand extends Command
|
|||||||
try {
|
try {
|
||||||
// handle abstract classes, interfaces, ...
|
// handle abstract classes, interfaces, ...
|
||||||
$reflectionClass = new \ReflectionClass($name);
|
$reflectionClass = new \ReflectionClass($name);
|
||||||
if (!$reflectionClass->IsInstantiable()) {
|
|
||||||
throw new \Exception($name . ' is not instanciable.');
|
if (!$reflectionClass->isSubclassOf('Illuminate\Database\Eloquent\Model')) {
|
||||||
} elseif (!$reflectionClass->isSubclassOf('Illuminate\Database\Eloquent\Model')) {
|
|
||||||
$this->comment("Class '$name' is not a model");
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$model = new $name();
|
$this->comment("Loading model '$name'");
|
||||||
|
|
||||||
|
if (!$reflectionClass->IsInstantiable()) {
|
||||||
|
throw new \Exception($name . ' is not instantiable.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$model = $this->laravel->make($name);
|
||||||
|
|
||||||
if ($hasDoctrine) {
|
if ($hasDoctrine) {
|
||||||
$this->getPropertiesFromTable($model);
|
$this->getPropertiesFromTable($model);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->getPropertiesFromMethods($model);
|
$this->getPropertiesFromMethods($model);
|
||||||
$output .= $this->createPhpDocs($name);
|
$output .= $this->createPhpDocs($name);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$this->error("Exception: " . $e->getMessage() . "\nCould not analyze class $name.");
|
$this->error("Exception: " . $e->getMessage() . "\nCould not analyze class $name.");
|
||||||
}
|
}
|
||||||
} elseif (interface_exists($name) || (function_exists('trait_exists') && trait_exists($name))) {
|
|
||||||
$this->info("Skipping interface/trait $name");
|
|
||||||
} else {
|
|
||||||
$this->error("Class $name does not exist");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$hasDoctrine) {
|
if (!$hasDoctrine) {
|
||||||
$this->error(
|
$this->error(
|
||||||
"Warning: 'doctrine/dbal: ~2.3' is required to load database information. Please require that in your composer.json and run 'composer update'."
|
'Warning: `"doctrine/dbal": "~2.3"` is required to load database information. Please require that in your composer.json and run `composer update`.'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,8 +256,8 @@ class ModelsCommand extends Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$comment = $column->getComment();
|
||||||
$this->setProperty($name, $type, true, true);
|
$this->setProperty($name, $type, true, true, $comment);
|
||||||
$this->setMethod(
|
$this->setMethod(
|
||||||
Str::camel("where_" . $name),
|
Str::camel("where_" . $name),
|
||||||
'\Illuminate\Database\Query\Builder|\\' . get_class($model),
|
'\Illuminate\Database\Query\Builder|\\' . get_class($model),
|
||||||
@@ -333,9 +333,9 @@ class ModelsCommand extends Command
|
|||||||
$search = '$this->' . $relation . '(';
|
$search = '$this->' . $relation . '(';
|
||||||
if ($pos = stripos($code, $search)) {
|
if ($pos = stripos($code, $search)) {
|
||||||
$code = substr($code, $pos + strlen($search));
|
$code = substr($code, $pos + strlen($search));
|
||||||
$arguments = explode(',', substr($code, 0, stripos($code, ')')));
|
$arguments = explode(',', substr($code, 0, strpos($code, ');')));
|
||||||
//Remove quotes, ensure 1 \ in front of the model
|
//Remove quotes, ensure 1 \ in front of the model
|
||||||
$returnModel = "\\" . ltrim(trim($arguments[0], " \"'"), "\\");
|
$returnModel = $this->getClassName($arguments[0], $model);
|
||||||
if ($relation === "belongsToMany" or $relation === 'hasMany' or $relation === 'morphMany' or $relation === 'morphToMany') {
|
if ($relation === "belongsToMany" or $relation === 'hasMany' or $relation === 'morphMany' or $relation === 'morphToMany') {
|
||||||
//Collection or array of models (because Collection is Arrayable)
|
//Collection or array of models (because Collection is Arrayable)
|
||||||
$this->setProperty(
|
$this->setProperty(
|
||||||
@@ -361,14 +361,16 @@ class ModelsCommand extends Command
|
|||||||
* @param string|null $type
|
* @param string|null $type
|
||||||
* @param bool|null $read
|
* @param bool|null $read
|
||||||
* @param bool|null $write
|
* @param bool|null $write
|
||||||
|
* @param string|null $comment
|
||||||
*/
|
*/
|
||||||
protected function setProperty($name, $type = null, $read = null, $write = null)
|
protected function setProperty($name, $type = null, $read = null, $write = null, $comment='')
|
||||||
{
|
{
|
||||||
if (!isset($this->properties[$name])) {
|
if (!isset($this->properties[$name])) {
|
||||||
$this->properties[$name] = array();
|
$this->properties[$name] = array();
|
||||||
$this->properties[$name]['type'] = 'mixed';
|
$this->properties[$name]['type'] = 'mixed';
|
||||||
$this->properties[$name]['read'] = false;
|
$this->properties[$name]['read'] = false;
|
||||||
$this->properties[$name]['write'] = false;
|
$this->properties[$name]['write'] = false;
|
||||||
|
$this->properties[$name]['comment'] = (string) $comment;
|
||||||
}
|
}
|
||||||
if ($type !== null) {
|
if ($type !== null) {
|
||||||
$this->properties[$name]['type'] = $type;
|
$this->properties[$name]['type'] = $type;
|
||||||
@@ -435,7 +437,7 @@ class ModelsCommand extends Command
|
|||||||
} else {
|
} else {
|
||||||
$attr = 'property-read';
|
$attr = 'property-read';
|
||||||
}
|
}
|
||||||
$tag = Tag::createInstance("@{$attr} {$property['type']} {$name}", $phpdoc);
|
$tag = Tag::createInstance("@{$attr} {$property['type']} {$name} {$property['comment']}", $phpdoc);
|
||||||
$phpdoc->appendTag($tag);
|
$phpdoc->appendTag($tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -509,4 +511,24 @@ class ModelsCommand extends Command
|
|||||||
return $paramsWithDefault;
|
return $paramsWithDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $className
|
||||||
|
* @param \Illuminate\Database\Eloquent\Model $model
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private function getClassName($className, $model)
|
||||||
|
{
|
||||||
|
// If the class name was resolved via get_class($this) or static::class
|
||||||
|
if (strpos($className, 'get_class($this)') !== false || strpos($className, 'static::class') !== false) {
|
||||||
|
return get_class($model);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the class name was resolved via ::class (PHP 5.5+)
|
||||||
|
if (strpos($className, '::class') !== false) {
|
||||||
|
$end = -1 * strlen('::class');
|
||||||
|
return substr($className, 0, $end);
|
||||||
|
}
|
||||||
|
|
||||||
|
return "\\" . ltrim(trim($className, " \"'"), "\\") ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-9
@@ -50,6 +50,10 @@ class Generator
|
|||||||
$this->extra = array_merge($this->extra, $this->config->get('laravel-ide-helper::extra'));
|
$this->extra = array_merge($this->extra, $this->config->get('laravel-ide-helper::extra'));
|
||||||
$this->magic = array_merge($this->magic, $this->config->get('laravel-ide-helper::magic'));
|
$this->magic = array_merge($this->magic, $this->config->get('laravel-ide-helper::magic'));
|
||||||
$this->interfaces = array_merge($this->interfaces, $this->config->get('laravel-ide-helper::interfaces'));
|
$this->interfaces = array_merge($this->interfaces, $this->config->get('laravel-ide-helper::interfaces'));
|
||||||
|
// Make all interface classes absolute
|
||||||
|
foreach ($this->interfaces as &$interface) {
|
||||||
|
$interface = '\\' . ltrim($interface, '\\');
|
||||||
|
}
|
||||||
$this->helpers = $helpers;
|
$this->helpers = $helpers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +114,7 @@ class Generator
|
|||||||
protected function detectDrivers()
|
protected function detectDrivers()
|
||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
if (class_exists('Auth')) {
|
if (class_exists('Auth') && is_a('Auth', '\Illuminate\Support\Facades\Auth', true)) {
|
||||||
$class = get_class(\Auth::driver());
|
$class = get_class(\Auth::driver());
|
||||||
$this->extra['Auth'] = array($class);
|
$this->extra['Auth'] = array($class);
|
||||||
$this->interfaces['\Illuminate\Auth\UserProviderInterface'] = $class;
|
$this->interfaces['\Illuminate\Auth\UserProviderInterface'] = $class;
|
||||||
@@ -118,7 +122,7 @@ class Generator
|
|||||||
}catch (\Exception $e) {}
|
}catch (\Exception $e) {}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
if (class_exists('DB')) {
|
if (class_exists('DB') && is_a('DB', '\Illuminate\Support\Facades\DB', true)) {
|
||||||
$class = get_class(\DB::connection());
|
$class = get_class(\DB::connection());
|
||||||
$this->extra['DB'] = array($class);
|
$this->extra['DB'] = array($class);
|
||||||
$this->interfaces['\Illuminate\Database\ConnectionInterface'] = $class;
|
$this->interfaces['\Illuminate\Database\ConnectionInterface'] = $class;
|
||||||
@@ -126,7 +130,7 @@ class Generator
|
|||||||
}catch (\Exception $e) {}
|
}catch (\Exception $e) {}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
if (class_exists('Cache')) {
|
if (class_exists('Cache') && is_a('Cache', '\Illuminate\Support\Facades\Cache', true)) {
|
||||||
$driver = get_class(\Cache::driver());
|
$driver = get_class(\Cache::driver());
|
||||||
$store = get_class(\Cache::getStore());
|
$store = get_class(\Cache::getStore());
|
||||||
$this->extra['Cache'] = array($driver, $store);
|
$this->extra['Cache'] = array($driver, $store);
|
||||||
@@ -135,7 +139,7 @@ class Generator
|
|||||||
}catch (\Exception $e) {}
|
}catch (\Exception $e) {}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
if (class_exists('Queue')) {
|
if (class_exists('Queue') && is_a('Queue', '\Illuminate\Support\Facades\Queue', true)) {
|
||||||
$class = get_class(\Queue::connection());
|
$class = get_class(\Queue::connection());
|
||||||
$this->extra['Queue'] = array($class);
|
$this->extra['Queue'] = array($class);
|
||||||
$this->interfaces['\Illuminate\Queue\QueueInterface'] = $class;
|
$this->interfaces['\Illuminate\Queue\QueueInterface'] = $class;
|
||||||
@@ -143,17 +147,13 @@ class Generator
|
|||||||
}catch (\Exception $e) {}
|
}catch (\Exception $e) {}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
if (class_exists('SSH')){
|
if (class_exists('SSH') && is_a('SSH', '\Illuminate\Support\Facades\SSH', true)){
|
||||||
$class = get_class(\SSH::connection());
|
$class = get_class(\SSH::connection());
|
||||||
$this->extra['SSH'] = array($class);
|
$this->extra['SSH'] = array($class);
|
||||||
$this->interfaces['\Illuminate\Remote\ConnectionInterface'] = $class;
|
$this->interfaces['\Illuminate\Remote\ConnectionInterface'] = $class;
|
||||||
}
|
}
|
||||||
}catch (\Exception $e) {}
|
}catch (\Exception $e) {}
|
||||||
|
|
||||||
// Make all interface classes absolute
|
|
||||||
foreach ($this->interfaces as &$interface) {
|
|
||||||
$interface = '\\' . ltrim($interface, '\\');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -11,9 +11,9 @@
|
|||||||
namespace Barryvdh\LaravelIdeHelper;
|
namespace Barryvdh\LaravelIdeHelper;
|
||||||
|
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\MetaCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
use Barryvdh\LaravelIdeHelper\Console\GeneratorCommand;
|
use Barryvdh\LaravelIdeHelper\Console\GeneratorCommand;
|
||||||
use Barryvdh\LaravelIdeHelper\Console\Generator2Command;
|
|
||||||
Use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
|
||||||
|
|
||||||
class IdeHelperServiceProvider extends ServiceProvider
|
class IdeHelperServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
@@ -54,7 +54,13 @@ class IdeHelperServiceProvider extends ServiceProvider
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->commands('command.ide-helper.generate', 'command.ide-helper.models');
|
$this->app['command.ide-helper.meta'] = $this->app->share(
|
||||||
|
function ($app) {
|
||||||
|
return new MetaCommand($app['files'], $app['view']);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->commands('command.ide-helper.generate', 'command.ide-helper.models', 'command.ide-helper.meta');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,4 +73,36 @@ class IdeHelperServiceProvider extends ServiceProvider
|
|||||||
return array('command.ide-helper.generate', 'command.ide-helper.models');
|
return array('command.ide-helper.generate', 'command.ide-helper.models');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the package's component namespaces.
|
||||||
|
*
|
||||||
|
* @param string $package
|
||||||
|
* @param string $namespace
|
||||||
|
* @param string $path
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function package($package, $namespace = null, $path = null)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Is it possible to register the config?
|
||||||
|
if (method_exists($this->app['config'], 'package')) {
|
||||||
|
$this->app['config']->package($package, $path.'/config', $namespace);
|
||||||
|
} else {
|
||||||
|
// Load the config for now..
|
||||||
|
$config = $this->app['files']->getRequire($path .'/config/config.php');
|
||||||
|
foreach($config as $key => $value){
|
||||||
|
$this->app['config']->set($namespace.'::'.$key, $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Register view files
|
||||||
|
$appView = $this->app['path']."/views/packages/{$package}";
|
||||||
|
if ($this->app['files']->isDirectory($appView))
|
||||||
|
{
|
||||||
|
$this->app['view']->addNamespace($namespace, $appView);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app['view']->addNamespace($namespace, $path.'/views');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -261,7 +261,7 @@ class Method
|
|||||||
$paramStr = '$' . $param->getName();
|
$paramStr = '$' . $param->getName();
|
||||||
$params[] = $paramStr;
|
$params[] = $paramStr;
|
||||||
if ($param->isOptional()) {
|
if ($param->isOptional()) {
|
||||||
$default = $param->getDefaultValue();
|
$default = $param->isDefaultValueAvailable() ? $param->getDefaultValue() : null;
|
||||||
if (is_bool($default)) {
|
if (is_bool($default)) {
|
||||||
$default = $default ? 'true' : 'false';
|
$default = $default ? 'true' : 'false';
|
||||||
} elseif (is_array($default)) {
|
} elseif (is_array($default)) {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Config;
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -84,7 +86,7 @@ return array(
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
'interfaces' => array(
|
'interfaces' => array(
|
||||||
'\Illuminate\Auth\UserInterface' => '\User',
|
'\Illuminate\Auth\UserInterface' => Config::get('auth.model', 'User'),
|
||||||
)
|
)
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?= '<?php' ?> namespace PHPSTORM_META {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PhpStorm Meta file, to provide autocomplete information for PhpStorm
|
||||||
|
* Generated on <?= date("Y-m-d") ?>.
|
||||||
|
*
|
||||||
|
* @author Barry vd. Heuvel <[email protected]>
|
||||||
|
* @see https://github.com/barryvdh/laravel-ide-helper
|
||||||
|
* @noinspection PhpUnusedLocalVariableInspection
|
||||||
|
* @noinspection PhpIllegalArrayKeyTypeInspection
|
||||||
|
*/
|
||||||
|
$STATIC_METHOD_TYPES = [
|
||||||
|
<?php foreach($methods as $method): ?>
|
||||||
|
<?= $method ?>('') => [
|
||||||
|
<?php foreach($bindings as $abstract => $class): ?>
|
||||||
|
'<?= $abstract ?>' instanceof \<?= $class ?>,
|
||||||
|
<?php endforeach ?> ],
|
||||||
|
<?php endforeach ?>
|
||||||
|
];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user