Compare commits

..
20 Commits
Author SHA1 Message Date
Barry vd. Heuvel 765a274c05 More methods 2015-03-16 14:26:28 +01:00
Barry vd. Heuvel b6a5262f3b TWeak meta methods 2015-03-16 14:14:57 +01:00
Barry vd. Heuvel d922d7e7ce Add actual command 2015-03-16 13:13:00 +01:00
Barry vd. Heuvel 89240e3ceb Add gist 2015-03-16 13:05:56 +01:00
Barry vd. Heuvel d9077b753c Note about missing classes. 2015-03-16 13:01:21 +01:00
Barry vd. Heuvel 683ed695a5 Fix views 2015-03-16 12:59:27 +01:00
Barry vd. Heuvel f8c4d4e77a Fix class imports 2015-03-16 12:52:48 +01:00
Barry vd. Heuvel b1a4494b1c Add note about meta file 2015-03-16 12:40:17 +01:00
Barry vd. Heuvel 70c06f5b37 Add meta command for phpstorm 2015-03-16 12:14:15 +01:00
Barry vd. Heuvel 81b7febfc6 Merge pull request #175 from robgeorgeuk/patch-1
New publish config syntax for Laravel 5
2015-02-23 16:55:54 +01:00
Rob George 208043b56f New publish config syntax for Laravel 5 2015-02-23 15:45:25 +00:00
Barry vd. Heuvel 4cd891eadc Merge pull request #169 from mattwells/master
Authenticatable Contract for User model
2015-02-17 13:55:39 +01:00
Matt Wells 7917ba911f Authenticatable Contract for User model 2015-02-17 10:54:52 +00:00
Barry vd. Heuvel 1f5e436d00 Merge pull request #167 from Flynsarmy/octoberConfig
Add support for October CMS config
2015-02-12 10:50:01 +01:00
flynsarmy fb3280eaff Add support for October CMS config 2015-02-12 19:03:29 +10:00
Barry vd. Heuvel 800ac05377 Revert
wrong branch
2015-02-07 23:18:26 +01:00
Barry vd. Heuvel 50059faa6f Add constraint
Fixes #164
2015-02-07 23:10:38 +01:00
Barry vd. Heuvel bb8d0169ba Merge pull request #162 from claar/patch-1
Bump L4 version number
2015-02-05 18:11:23 +01:00
Ben Claar fe692a4e77 Bump L4 version number 2015-02-05 11:03:19 -06:00
Barry vd. Heuvel c3a622fcc9 Rename 1.8 branch 2015-02-05 09:11:12 +01:00
7 changed files with 160 additions and 8 deletions
+1 -1
View File
@@ -83,7 +83,7 @@ return array(
*/ */
'interfaces' => array( 'interfaces' => array(
'\Illuminate\Auth\UserInterface' => config('auth.model', 'User'), '\Illuminate\Contracts\Auth\Authenticatable' => config('auth.model', 'App\User'),
) )
); );
+17 -3
View File
@@ -1,7 +1,7 @@
## Laravel 5 IDE Helper Generator ## Laravel 5 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.x](https://github.com/barryvdh/laravel-ide-helper/tree/v1.x) ### For Laravel 4.x, check [version 1.11](https://github.com/barryvdh/laravel-ide-helper/tree/1.11)
### Complete phpDocs, directly from the source ### Complete phpDocs, directly from the source
@@ -14,6 +14,21 @@ 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')->..
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: 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:
@@ -42,7 +57,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 config:publish barryvdh/laravel-ide-helper php artisan vendor:publish --provider=barryvdh/laravel-ide-helper --tag=config
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.
@@ -52,7 +67,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
> You need to require `doctrine/dbal: ~2.3` in your own composer.json to get database columns. > You need to require `doctrine/dbal: ~2.3` in your own composer.json to get database columns.
+20
View File
@@ -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 ?>
];
}
+1 -1
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
) { ) {
+111
View File
@@ -0,0 +1,111 @@
<?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 = [
'\Illuminate\Foundation\Application::make',
'\Illuminate\Contracts\Foundation\Application::make',
'\Illuminate\Contracts\Container\Container::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('ide-helper::meta', [
'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),
);
}
}
+1 -1
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 = ''
+9 -2
View File
@@ -11,8 +11,9 @@
namespace Barryvdh\LaravelIdeHelper; namespace Barryvdh\LaravelIdeHelper;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Barryvdh\LaravelIdeHelper\Console\GeneratorCommand; use Barryvdh\LaravelIdeHelper\Console\MetaCommand;
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand; use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
use Barryvdh\LaravelIdeHelper\Console\GeneratorCommand;
class IdeHelperServiceProvider extends ServiceProvider class IdeHelperServiceProvider extends ServiceProvider
{ {
@@ -59,8 +60,14 @@ class IdeHelperServiceProvider extends ServiceProvider
return new ModelsCommand(); return new ModelsCommand();
} }
); );
$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'); $this->commands('command.ide-helper.generate', 'command.ide-helper.models', 'command.ide-helper.meta');
} }
/** /**