Laravel & PHPStorm – the best of the two worlds. Laravel is the most popular PHP web framework today. PHPStorm is the best PHP IDE that money can buy. What’s sad is that there is still no built in support for Laravel in PHPStorm. I created an issue on YouTrack (Jetbrain’s issue tracker) a long time ago which has received quite a good number of votes by today. I do hope Laravel support will come soon on the IDE. Meanwhile, there are workarounds to get things done smoothly.
Auto Completion
PHPStorm's Laravel Facades Issue Free Episode Run Time 2:05. Now that you understand how to go about debugging a single PHP script, what might the process of debugging a typical Laravel application look like? Section 6 Advanced Usage Composer Dependencies and PHPStorm. Apr 20, 2020 Laravel is full of hidden gems, undocumented or less-known features, functions parameters and 'hacks'. While finding them in work of my team, I decided to compile them into an e-book. 8 Tricks with Laravel Timestamps.
Thanks to the massive class aliasing (& use of Facade) in the framework core, PHPStorm can’t provide true autocompletion for Laravel by default. But there are excellent packages like Laravel IDE Helper which can generate phpdocs from the framework source. It generates a file which the IDE can parse and use the generated codes to provide autocompletion.
Installation and usage is simple. First modify your composer.json to include it in the require section:
2 4 6 8 | // [snip] 'require':{ 'barryvdh/laravel-ide-helper':'dev-master' // [snip] |
Run composer update:
The package should be installed if everything goes right. Now, you need to make sure the package is loaded in Laravel (so that artisan can execute the commands it provides). Add this to the providers array under app/config.php – ‘BarryvdhLaravelIdeHelperIdeHelperServiceProvider’. It should look like:
2 4 6 8 | 'IlluminateWorkbenchWorkbenchServiceProvider', 'BarryvdhLaravelIdeHelperIdeHelperServiceProvider', ), |
Now you can do this in command line:
The command should generate a file named “_ide_helper.php” with the necessary codes. You might want to recreate the code cache from “File” > “Invalidate Caches / Restart”. When the IDE restarts, you should get code completion for most of the Laravel code.
Blade Syntax
This one could be a bit tricky. But if you have installed Textmate bundles into Jetbrains IDEs, it’s actually simpler.
(1) Download the textmate bundle here – https://github.com/outofcontrol/Blade.tmbundle. If you download the zip, uncompress it to somewhere on your harddisk.
(2) From PHPStorm’s Settings window, go to TextMate Bundles. Add the bundle and apply the changes.
(3) Go to “File Types” settings. Select “File types supported via textmate bundles”. Add “*.blade.php” to that list. Apply the changes. Now try and open a blade file. It should work.
(4) Additionally, if there’s horrible color scheme on blade files, go back to “Settings” > “TextMate Bundles”, assign the color schemes to Darcula. (In my case, I switched all to Dracula under the “TextMate Color Scheme” column. If you click an item under that column, you should get a pop up to select.)
Now the blade syntax should work fine with nice color scheme.
Laravel Phpstorm Plugin
How clean laptop memory. You may wish to extend PhpStorm to support Blade Directives of this package.
- In PhpStorm, open Preferences, and navigate to Languages and Frameworks -> PHP -> Blade(File | Settings | Languages & Frameworks | PHP | Blade)
- Uncheck 'Use default settings', then click on the
Directives
tab. - Add the following new directives for the laravel-permission package:
role
- has parameter = YES
- Prefix:
<?php if(auth()->check() && auth()->user()->hasRole(
- Suffix:
)); ?>
--
endrole
- has parameter = NO
- Prefix: blank
- Suffix: blank
Autocomplete Laravel In Phpstorm
--
hasrole
- has parameter = YES
- Prefix:
<?php if(auth()->check() && auth()->user()->hasRole(
- Suffix:
)); ?>
--
endhasrole
- has parameter = NO
- Prefix: blank
- Suffix: blank
--
hasanyrole
- has parameter = YES
- Prefix:
<?php if(auth()->check() && auth()->user()->hasAnyRole(
- Suffix:
)); ?>
--
endhasanyrole
- has parameter = NO
- Prefix: blank
- Suffix: blank
--
hasallroles
- has parameter = YES
- Prefix:
<?php if(auth()->check() && auth()->user()->hasAllRoles(
- Suffix:
)); ?>
--
endhasallroles
- has parameter = NO
- Prefix: blank
- Suffix: blank
Laravel In Phpstorm Minecraft
--
unlessrole
- has parameter = YES
- Prefix:
<?php if(auth()->check() && !auth()->user()->hasRole(
- Suffix:
)); ?>
--
endunlessrole
- has parameter = NO
- Prefix: blank
- Suffix: blank
--