phpstorm-stubs
, (*1)
, (*2)
STUBS are normal, syntactically correct PHP files that contain function & class signatures, constant definitions, etc. for all built-in PHP stuff and most standard extensions. Stubs need to include complete PHPDOC, especially proper @return annotations., (*3)
An IDE needs them for completion, code inspection, type inference, doc popups, etc. Quality of most of these services depend on the quality of the stubs (basically their PHPDOC @annotations)., (*4)
Note that the stubs for “non-standard” extensions are provided as is. (Non-Standard extensions are the ones that are not part of PHP Core or are not Bundled/External - see the complete list here.), (*5)
The support for such “non-standard” stubs is community-driven, and we only validate their PHPDoc. We do not check whether a stub matches the actual extension or whether the provided descriptions are correct., (*6)
Please note that currently there are no tests for the thrown exceptions so @throws tags should be checked manually according to official docs or PHP source code, (*7)
[Relevant open issues], (*8)
Contribution process
Contribution process, (*9)
Updating the IDE
Have a full copy of the .git repo within an IDE and provide its path in Settings | Languages & Frameworks | PHP | PHP Runtime | Advanced settings | Default stubs path
. It should then be easily updatable both ways via normal git methods., (*10)
Extensions enabled by default
The set of extensions enabled by default in PhpStorm can change anytime without prior notice. To learn how to view the enabled extensions, look here., (*11)
How to run tests
- Execute
docker compose -f docker-compose.yml run test_runner composer install --ignore-platform-reqs
- Execute
docker compose -f docker-compose.yml run -e PHP_VERSION=8.0 test_runner vendor/bin/phpunit --testsuite PHP_8.0
How to update stub map
Execute docker compose -f docker-compose.yml run test_runner /usr/local/bin/php tests/Tools/generate-stub-map
and commit the resulting PhpStormStubsMap.php
, (*12)
License
Apache 2, (*13)
contains material by the PHP Documentation Group, licensed with CC-BY 3.0, (*14)