Autocomplete keys of associative arrays defined in other functions.
Jetbrains Repository: 9927-deep-assoc-completion
(a bit more relaxed usage guide can be found here)
Completion from expression
When you are going to type an associative key of a variable, like in
$user[''], put caret between quotes and press
space. The plugin will analyze your code, determine what keys does
$userhave and suggest completion.
Go To Definition
To go to the key definition, hover on it and press
clickor put carret on it and press
Completion from phpdoc
You can specify function argument type using
@param SomeType $varName = Some::phpExpression(), like
@param $anime = ['genre' => 'shounen', 'studio' => 'Shaft'].
=is mandatory and expression must be a valid php expression. Class methods can be specified either with complete namespace like
\Very\Long\Namespace\ClassName::funcName(), or with just
You can specify
@returnarray keys as well:
/** * @return array [ * 'success' => true, * 'formObject' => new Form, * 'errors' => , * ] */ public static function processForm($arr);
Object type info in an associative array
Phpstorm does not give you method name completion when object is located in an associative array? Don't be sad, this plugin is exactly what you need!
To N-th Test
Did you ever want an ability to find out which exactly test case does phpunit mean by the
with data set "17"without manually counting them? You can find this feature in Tools -> deep-assoc-completion -> To N-th Test. It moves your caret to the test case with the order you specify in the popup. If there are multiple
@dataProviderfunctions in the file, the function caret is currently in will be used. This action will work correctly only on more or less straightforward
String value completion
Transpile to JS code (not related to completion anyhow, but whatever)
Argument type resolution based on what was passed to the function
Extremely useful for small private helper functions - you don't need to document args in each of them to get completion.
Keys from PDOStatement::fetch() if your Database is connected to IDEA
All built-in array functions I could find are supported
Steps to compile plugin into a
- Start creating a new project in Intelliji Idea.
Intelliji Platform Plugin.
- Select a phpstorm or IDEA Ultimate installation directory as
Project SDK(java version is 8).
deep-assoc-completionproject folder as
Project Structure -> Librariesadd
YourPhpStormDirectory/plugins/php/lib/(in case of IDEA Ultimate, the
phpplugin should be installed, and the location is
Project Structure -> Modules -> Dependenciesset
To build a jar use
Build -> Prepare Plugin ... For Deployment. To debug use
Run -> Debug. Since phpstorm project takes about a minute to start, you must find
Run -> Reload Changed Classes very useful for micro changes.
To use compiled
.jar in your phpstorm go to
Settings -> Plugins -> Install plugin from disk and select the
.jar we compiled earlier.