Compare commits

..
3 Commits
Author SHA1 Message Date
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
9 changed files with 107 additions and 80 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"
]
}
+7 -7
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
@@ -20,7 +20,7 @@ Require this package with composer using the following command:
composer require barryvdh/laravel-ide-helper composer require barryvdh/laravel-ide-helper
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',
@@ -42,7 +42,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.
@@ -55,7 +55,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)`).
@@ -84,9 +84,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 -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');
+7 -13
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)
@@ -113,8 +113,8 @@ class Generator
protected function detectDrivers() protected function detectDrivers()
{ {
try{ try{
if (class_exists('Auth') && is_a('Auth', '\Illuminate\Support\Facades\Auth', true)) { 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;
@@ -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
@@ -31,11 +31,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');
} }
/** /**
@@ -45,9 +41,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']);
@@ -72,5 +65,37 @@ 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,39 +1,39 @@
<?= '<?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>
* @see https://github.com/barryvdh/laravel-ide-helper * @see https://github.com/barryvdh/laravel-ide-helper
*/ */
<?php foreach($namespaces as $namespace => $aliases): ?> <?php foreach($namespaces as $namespace => $aliases): ?>
namespace <?= $namespace == '__root' ? '' : $namespace ?>{ namespace <?= $namespace == '__root' ? '' : $namespace ?>{
<?php if($namespace == '__root'): ?> <?php if($namespace == '__root'): ?>
exit("This file should not be included, only analyzed by your IDE"); exit("This file should not be included, only analyzed by your IDE");
<?= $helpers ?> <?= $helpers ?>
<?php endif; ?> <?php endif; ?>
<?php foreach($aliases as $alias): ?> <?php foreach($aliases as $alias): ?>
<?= $alias->getClassType() ?> <?= $alias->getShortName() ?> <?= $alias->getExtends() ? 'extends ' . $alias->getExtends() : '' ?>{ <?= $alias->getClassType() ?> <?= $alias->getShortName() ?> <?= $alias->getExtends() ? 'extends ' . $alias->getExtends() : '' ?>{
<?php foreach($alias->getMethods() as $method): ?> <?php foreach($alias->getMethods() as $method): ?>
<?= trim($method->getDocComment(' ')) ?> <?= trim($method->getDocComment(' ')) ?>
public static function <?= $method->getName() ?>(<?= $method->getParamsWithDefault() ?>){<?php if($method->getDeclaringClass() !== $method->getRoot()): ?> public static function <?= $method->getName() ?>(<?= $method->getParamsWithDefault() ?>){<?php if($method->getDeclaringClass() !== $method->getRoot()): ?>
//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->getName() ?>(<?= $method->getParams() ?>);
} }
<?php endforeach; ?> <?php endforeach; ?>
} }
<?php endforeach; ?> <?php endforeach; ?>
} }
<?php endforeach; ?> <?php endforeach; ?>