Compare commits

..
12 Commits
Author SHA1 Message Date
Barry vd. Heuvel 6eb797f5ff Remove contracts from L4 version 2015-03-16 14:28:03 +01:00
Barry vd. Heuvel 604d327277 More meta methods 2015-03-16 14:25:52 +01:00
Barry vd. Heuvel 6ed5367f6b Tweak meta methods 2015-03-16 14:16:41 +01:00
Barry vd. Heuvel 8c339bd6b0 Add actual command 2015-03-16 13:12:40 +01:00
Barry vd. Heuvel 52b9b52926 Add gist 2015-03-16 13:06:29 +01:00
Barry vd. Heuvel f909c82fcc Fix class imports 2015-03-16 12:52:26 +01:00
Barry vd. Heuvel e88c3669b7 Add note about meta file 2015-03-16 12:40:53 +01:00
Barry vd. Heuvel 5bd7eeda23 Add meta command for phpstorm 2015-03-16 12:13:15 +01:00
Barry vd. Heuvel dae0b55bef Update version
Fixes #164
2015-02-07 23:18:57 +01:00
Barry vd. Heuvel 3f9831c5cf Check for correct facades 2015-02-04 09:14:36 +01:00
Barry vd. Heuvel 2cc277440a Remove tree 2015-02-03 21:03:00 +01:00
Barry vd. Heuvel 14eab5ef84 Point to 2.0 branch 2015-01-28 09:36:05 +01:00
11 changed files with 111 additions and 87 deletions
+5 -5
View File
@@ -10,10 +10,10 @@
} }
], ],
"require": { "require": {
"php": ">=5.4.0", "php": ">=5.3.0",
"illuminate/support": "5.0.x", "illuminate/support": "4.x",
"illuminate/console": "5.0.x", "illuminate/console": "4.x",
"illuminate/filesystem": "5.0.x", "illuminate/filesystem": "4.x",
"phpdocumentor/reflection-docblock": "2.0.x", "phpdocumentor/reflection-docblock": "2.0.x",
"symfony/class-loader": "~2.3" "symfony/class-loader": "~2.3"
}, },
@@ -30,7 +30,7 @@
}, },
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.0-dev" "dev-master": "1.11-dev"
} }
} }
} }
+5
View File
@@ -0,0 +1,5 @@
{
"providers": [
"Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider"
]
}
+8 -9
View File
@@ -1,7 +1,7 @@
## Laravel 5 IDE Helper Generator ## Laravel IDE Helper Generator
[![Latest Stable Version](https://poser.pugx.org/barryvdh/laravel-ide-helper/version.png)](https://packagist.org/packages/barryvdh/laravel-ide-helper) [![Total Downloads](https://poser.pugx.org/barryvdh/laravel-ide-helper/d/total.png)](https://packagist.org/packages/barryvdh/laravel-ide-helper) [![Latest Stable Version](https://poser.pugx.org/barryvdh/laravel-ide-helper/version.png)](https://packagist.org/packages/barryvdh/laravel-ide-helper) [![Total Downloads](https://poser.pugx.org/barryvdh/laravel-ide-helper/d/total.png)](https://packagist.org/packages/barryvdh/laravel-ide-helper)
### For Laravel 4.x, check [version 1.11](https://github.com/barryvdh/laravel-ide-helper/tree/1.11) ### 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
@@ -27,15 +27,14 @@ Pre-generated example: https://gist.github.com/barryvdh/bb6ffc5d11e0a75dba67
> Note: This is only available in the `@dev` stability, until a new release is tagged. > Note: This is only available in the `@dev` stability, until a new release is tagged.
> Note: You might need to restart PhpStorm and make sure `.phpstorm.meta.php` is indexed. > Note: You might need to restart PhpStorm and make sure `.phpstorm.meta.php` is indexed.
> Note: When you receive a FatalException about a class that is not found, check your config (For example, remove S3 as cloud driver when you don't have S3 configured. Remove Redis ServiceProvider when you don't use it.)
### Automatic phpDoc generation for Laravel Facades ### Automatic phpDoc generation for Laravel Facades
Require this package with composer using the following command: Require this package with composer using the following command:
composer require barryvdh/laravel-ide-helper composer require barryvdh/laravel-ide-helper ~1.11
After updating composer, add the ServiceProvider to the providers array in config/app.php After updating composer, add the ServiceProvider to the providers array in app/config/app.php
'Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider', 'Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider',
@@ -57,7 +56,7 @@ You can configure your composer.json to do this after each commit:
You can also publish the config-file to change implementations (ie. interface to specific class) or set defaults for --helpers or --sublime. You can also publish the config-file to change implementations (ie. interface to specific class) or set defaults for --helpers or --sublime.
php artisan vendor:publish --provider=barryvdh/laravel-ide-helper --tag=config php artisan config:publish barryvdh/laravel-ide-helper
The generator tries to identify the real class, but if it cannot be found, you can define it in the config file. The generator tries to identify the real class, but if it cannot be found, you can define it in the config file.
@@ -69,7 +68,7 @@ The Illuminate/Support/helpers.php is already set-up, but you can add/remove you
### Automatic phpDocs for Models ### Automatic phpDocs for Models
> You need to require `doctrine/dbal: ~2.3` in your own composer.json to get database columns. > **Note:** Since v1.10 you need to require `doctrine/dbal: ~2.3` in your own composer.json.
If you don't want to write your properties yourself, you can use the command `ide-helper:models` to generate If you don't want to write your properties yourself, you can use the command `ide-helper:models` to generate
phpDocs, based on table columns, relations and getters/setters. You can write the comments directly to your Model file, using the `--write (-W)` option. By default, you are asked to overwrite or write to a separate file (\_ide\_helper\_models.php) (You can force No with `--nowrite (-N)`). phpDocs, based on table columns, relations and getters/setters. You can write the comments directly to your Model file, using the `--write (-W)` option. By default, you are asked to overwrite or write to a separate file (\_ide\_helper\_models.php) (You can force No with `--nowrite (-N)`).
@@ -98,9 +97,9 @@ By default, models in app/models are scanned. The optional argument tells what m
You can also scan a different directory, using the --dir option (relative from the base path): You can also scan a different directory, using the --dir option (relative from the base path):
php artisan ide-helper:models --dir="path/to/models" --dir="app/src/Model" php artisan ide-helper:models --dir="app/workbench/name/package/models" --dir="app/src/Model"
You can publish the config file (`php artisan vendor:publish`) and set the default directories. You can publish the config file (`php artisan config:publish barryvdh/laravel-ide-helper`) and set the default directories.
Models can be ignored using the --ignore (-I) option Models can be ignored using the --ignore (-I) option
+5 -5
View File
@@ -59,7 +59,7 @@ class GeneratorCommand extends Command
* @param \Illuminate\View\Factory $view * @param \Illuminate\View\Factory $view
*/ */
public function __construct( public function __construct(
/*ConfigRepository */ $config, ConfigRepository $config,
Filesystem $files, /* Illuminate\View\Factory */ Filesystem $files, /* Illuminate\View\Factory */
$view $view
) { ) {
@@ -97,8 +97,8 @@ class GeneratorCommand extends Command
$helpers = ''; $helpers = '';
if ($this->option('helpers') || ($this->config->get('ide-helper.include_helpers'))) { if ($this->option('helpers') || ($this->config->get('laravel-ide-helper::include_helpers'))) {
foreach ($this->config->get('ide-helper.helper_files', array()) as $helper) { foreach ($this->config->get('laravel-ide-helper::helper_files', array()) as $helper) {
if (file_exists($helper)) { if (file_exists($helper)) {
$helpers .= str_replace(array('<?php', '?>'), '', $this->files->get($helper)); $helpers .= str_replace(array('<?php', '?>'), '', $this->files->get($helper));
} }
@@ -139,7 +139,7 @@ class GeneratorCommand extends Command
*/ */
protected function getArguments() protected function getArguments()
{ {
$filename = $this->config->get('ide-helper.filename'); $filename = $this->config->get('laravel-ide-helper::filename');
return array( return array(
array( array(
@@ -155,7 +155,7 @@ class GeneratorCommand extends Command
*/ */
protected function getOptions() protected function getOptions()
{ {
$format = $this->config->get('ide-helper.format'); $format = $this->config->get('laravel-ide-helper::format');
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),
+1 -3
View File
@@ -43,8 +43,6 @@ class MetaCommand extends Command {
protected $methods = [ protected $methods = [
'\Illuminate\Foundation\Application::make', '\Illuminate\Foundation\Application::make',
'\Illuminate\Contracts\Foundation\Application::make',
'\Illuminate\Contracts\Container\Container::make',
'\Illuminate\Container\Container::make', '\Illuminate\Container\Container::make',
'\App::make', '\App::make',
'app', 'app',
@@ -83,7 +81,7 @@ class MetaCommand extends Command {
} }
} }
$content = $this->view->make('ide-helper::meta', [ $content = $this->view->make('laravel-ide-helper::meta', [
'bindings' => $bindings, 'bindings' => $bindings,
'methods' => $this->methods, 'methods' => $this->methods,
])->render(); ])->render();
+1 -1
View File
@@ -60,7 +60,7 @@ class ModelsCommand extends Command
$filename = $this->option('filename'); $filename = $this->option('filename');
$this->write = $this->option('write'); $this->write = $this->option('write');
$this->dirs = array_merge( $this->dirs = array_merge(
$this->laravel['config']->get('ide-helper.model_locations'), $this->laravel['config']->get('laravel-ide-helper::model_locations'),
$this->option('dir') $this->option('dir')
); );
$model = $this->argument('model'); $model = $this->argument('model');
+5 -11
View File
@@ -36,7 +36,7 @@ class Generator
* @param \Symfony\Component\Console\Output\OutputInterface $output * @param \Symfony\Component\Console\Output\OutputInterface $output
* @param string $helpers * @param string $helpers
*/ */
public function __construct(/*ConfigRepository */ $config, public function __construct(ConfigRepository $config,
/* Illuminate\View\Factory */ $view, /* Illuminate\View\Factory */ $view,
OutputInterface $output = null, OutputInterface $output = null,
$helpers = '' $helpers = ''
@@ -47,9 +47,9 @@ class Generator
// Find the drivers to add to the extra/interfaces // Find the drivers to add to the extra/interfaces
$this->detectDrivers(); $this->detectDrivers();
$this->extra = array_merge($this->extra, $this->config->get('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('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('ide-helper.interfaces')); $this->interfaces = array_merge($this->interfaces, $this->config->get('laravel-ide-helper::interfaces'));
// Make all interface classes absolute // Make all interface classes absolute
foreach ($this->interfaces as &$interface) { foreach ($this->interfaces as &$interface) {
$interface = '\\' . ltrim($interface, '\\'); $interface = '\\' . ltrim($interface, '\\');
@@ -77,7 +77,7 @@ class Generator
public function generatePhpHelper() public function generatePhpHelper()
{ {
$app = app(); $app = app();
return $this->view->make('ide-helper::helper') return $this->view->make('laravel-ide-helper::ide-helper')
->with('namespaces', $this->getNamespaces()) ->with('namespaces', $this->getNamespaces())
->with('helpers', $this->helpers) ->with('helpers', $this->helpers)
->with('version', $app::VERSION) ->with('version', $app::VERSION)
@@ -167,12 +167,6 @@ class Generator
// Get all aliases // Get all aliases
foreach (AliasLoader::getInstance()->getAliases() as $name => $facade) { foreach (AliasLoader::getInstance()->getAliases() as $name => $facade) {
// Skip the Redis facade, if not available (otherwise Fatal PHP Error)
if ($facade == 'Illuminate\Support\Facades\Redis' && !class_exists('Predis\Client')) {
continue;
}
$magicMethods = array_key_exists($name, $this->magic) ? $this->magic[$name] : array(); $magicMethods = array_key_exists($name, $this->magic) ? $this->magic[$name] : array();
$alias = new Alias($name, $facade, $magicMethods, $this->interfaces); $alias = new Alias($name, $facade, $magicMethods, $this->interfaces);
if ($alias->isValid()) { if ($alias->isValid()) {
+33 -8
View File
@@ -32,11 +32,7 @@ class IdeHelperServiceProvider extends ServiceProvider
*/ */
public function boot() public function boot()
{ {
$viewPath = __DIR__.'/../resources/views'; $this->package('barryvdh/laravel-ide-helper', 'laravel-ide-helper', __DIR__);
$this->loadViewsFrom($viewPath, 'ide-helper');
$configPath = __DIR__ . '/../config/ide-helper.php';
$this->publishes([$configPath => config_path('ide-helper.php')], 'config');
} }
/** /**
@@ -46,9 +42,6 @@ class IdeHelperServiceProvider extends ServiceProvider
*/ */
public function register() public function register()
{ {
$configPath = __DIR__ . '/../config/ide-helper.php';
$this->mergeConfigFrom($configPath, 'ide-helper');
$this->app['command.ide-helper.generate'] = $this->app->share( $this->app['command.ide-helper.generate'] = $this->app->share(
function ($app) { function ($app) {
return new GeneratorCommand($app['config'], $app['files'], $app['view']); return new GeneratorCommand($app['config'], $app['files'], $app['view']);
@@ -80,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,5 +1,7 @@
<?php <?php
use Illuminate\Support\Facades\Config;
return array( return array(
/* /*
@@ -41,7 +43,7 @@ return array(
*/ */
'model_locations' => array( 'model_locations' => array(
'app', 'app/models',
), ),
@@ -55,6 +57,7 @@ return array(
*/ */
'extra' => array( 'extra' => array(
'Artisan' => array('Illuminate\Foundation\Artisan'),
'Eloquent' => array('Illuminate\Database\Eloquent\Builder', 'Illuminate\Database\Query\Builder'), 'Eloquent' => array('Illuminate\Database\Eloquent\Builder', 'Illuminate\Database\Query\Builder'),
'Session' => array('Illuminate\Session\Store'), 'Session' => array('Illuminate\Session\Store'),
), ),
@@ -83,7 +86,7 @@ return array(
*/ */
'interfaces' => array( 'interfaces' => array(
'\Illuminate\Contracts\Auth\Authenticatable' => config('auth.model', 'App\User'), '\Illuminate\Auth\UserInterface' => Config::get('auth.model', 'User'),
) )
); );
@@ -1,7 +1,7 @@
<?= '<?php' ?> <?= '<?php' ?>
/** /**
* An helper file for Laravel 5, to provide autocomplete information to your IDE * An helper file for Laravel 4, to provide autocomplete information to your IDE
* Generated for Laravel <?= $version ?> on <?= date("Y-m-d") ?>. * Generated for Laravel <?= $version ?> on <?= date("Y-m-d") ?>.
* *
* @author Barry vd. Heuvel <barryvdh@gmail.com> * @author Barry vd. Heuvel <barryvdh@gmail.com>