Install it as require-dev
dependency:
composer require --dev dereuromark/cakephp-ide-helper
Enable the plugin in your Application.php
or call
bin/cake plugin load IdeHelper
Note: As require-dev dependency this should only be loaded for local development (include a check or try/catch).
And ideally also only for CLI mode (if (PHP_SAPI === 'cli')
).
There are two main tools for keeping your code up to date:
- Annotator: This tool keeps your docblocks and annotations up to date, it is not supposed to modify actual (functional) code.
- Illuminator: This tool can modify your code itself, add constants, methods or alike.
Especially annotations are needed for static analyzers to be able to understand the code. The other tools are mainly IDE autocomplete/code-completion specific and usually helpers on top to make your IDE better understand the code.
Update baked annotations and provide maximum IDE and static analyzer (e.g. PHPStan) support.
The Illuminator can modify your PHP files based on Illuminator rulesets. You can use the pre-set tasks, or create your own to enhance your PHP files and classes.
Create a code completion file for the IDE in order to annotate dynamic "magic" property access and alike. This removes the need for inline annotations all over the CakePHP code, as the IDE then automatically understands, type-hints and auto-completes here.
Create a meta file for the IDE in order to hint static factory methods and alike, that otherwise would always just return the abstract or parent class.
Quick-Guide, see the above links for details.
Running it on your app:
bin/cake annotate [type]
By default it will print out a diff of the changes incl the amount of modified lines if applicable.
Running it on an installed plugin:
bin/cake annotate [type] -p FooBar
Note: It will be autoloaded if needed (if not manually loaded already).
Use -v
for verbose and detailed output:
bin/cake annotate [type] -v
You can add -d
(--dry-run
) to simulate the output without actually modifying the files.
The code completion file aims to be generic and to work with all IDEs.
Generate your code completion files into TMP:
bin/cake generate code_completion
So far the meta file is available for the following IDEs:
- PhpStorm (2016.2+)
- VSCode using PHP Intelephense plugin (bmewburn.vscode-intelephense-client)
Generate your app .phpstorm.meta.php
meta file:
bin/cake generate phpstorm
Improve your PHP files:
bin/cake illuminate <path>
Use -v
for verbose and detailed output:
bin/cake illuminate <path> -v
Use -t
(--task
) to only run specific task(s), can be a comma separated list.
You can add -d
(--dry-run
) to simulate the output without actually modifying the files.
Group them for your project as composer.json script commands:
"scripts": {
...
"setup": "bin/cake generate code_completion && bin/cake generate phpstorm",
"annotate": "bin/cake annotate all && bin/cake annotate all -p Sandbox && ...",
"illuminate": "bin/cake illuminate",
This way you only need to remember these high level ones:
composer setup
(also possible as Git hook after checkout/pull)composer annotate
(include all your /plugins, the non-vendor ones)composer illuminate
(include all your /plugins, the non-vendor ones)
bin/cake code_completion generate
is nowbin/cake generate code_completion
.bin/cake phpstorm generate
is nowbin/cake generate phpstorm
.bin/cake illuminator
is nowbin/cake illuminate
.