arokettu / phpstorm-metadata-export
Export PhpStorm Advanced Metadata from DI containers
Requires
- php: ^7.2 | ^8.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- laminas/laminas-servicemanager: ^3.0 | ^4.0
- php-di/php-di: ^6.0 | ^7.0
- phpunit/phpunit: >= 7 < 10
- pimple/pimple: ^3.0
- psy/psysh: *
- sandfox.dev/code-standard: ^1
- slim/slim: ^3.0
- squizlabs/php_codesniffer: *
- symfony/polyfill-php80: ^1.23
- vimeo/psalm: ^4.30 | ^5.4
README
Export PhpStorm Advanced Metadata from DI containers to enable code completion.
The library is inspired by Pimple Container Dumper for Silex, but it doesn't require IDE plugin because it uses native PhpStorm export format. It can integrate with any PSR-15 compliant framework and is extensible to support more DI containers and frameworks in the future.
Installation
Install by composer
composer require arokettu/phpstorm-metadata-export --dev
Container Support
Supported containers:
- Pimple (v3)
- PHP-DI (v6, v7)
- Laminas ServiceManager (v3, v4; permanently unstable)
Integration middlewares for:
Example
<?php $container = new \DI\Container(); // .phpstorm.meta.php must be in a root path of your project $storePath = __DIR__ '/.phpstorm.meta.php/sandfox_container_export.meta.php'; // just generate the file content $metaPhp = \Arokettu\PhpStorm\Metadata\Generator::get([$container]); file_put_contents($storePath, $metaPhp); // use middleware (Slim 4 example) $app = new \Slim\App(); $app->addMiddleware(new \Arokettu\PhpStorm\Metadata\Integration\ContainerExportMiddleware($container, [ 'filename' => $storePath, ]));
Documentation
Read full documentation at https://sandfox.dev/php/metadata-exporter-phpstorm.html
Also on Read the Docs: https://phpstorm-metadata-export.readthedocs.io/
Support
Please file issues on our main repo at GitLab: https://gitlab.com/sandfox/phpstorm-metadata-export/-/issues
Feel free to ask any questions in our room on Gitter: https://gitter.im/arokettu/community
License
The library is available as open source under the terms of the MIT License. See LICENSE.md.