sandfoxme/phpstorm-metadata-export

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Metadata Exporter for PhpStorm

[![Packagist]][Packagist Link]
[![license]][MIT License]
[![Code Climate]][Code Climate Link]
[![Gitlab pipeline status]][pipelines]
[![Codecov]][codecov link]

[Packagist]: https://img.shields.io/packagist/v/arokettu/phpstorm-metadata-export.svg?style=flat-square
[license]: https://img.shields.io/github/license/arokettu/phpstorm-metadata-export.svg?style=flat-square
[Code Climate]: https://img.shields.io/codeclimate/maintainability/sandfoxme/phpstorm-metadata-export.svg?style=flat-square
[Gitlab pipeline status]: https://img.shields.io/gitlab/pipeline/sandfox/phpstorm-metadata-export/master.svg?style=flat-square
[Codecov]: https://img.shields.io/codecov/c/gl/sandfox/phpstorm-metadata-export?style=flat-square

[Packagist Link]: https://packagist.org/packages/arokettu/phpstorm-metadata-export
[pipelines]: https://gitlab.com/sandfox/phpstorm-metadata-export/-/pipelines
[codecov link]: https://codecov.io/gl/sandfox/phpstorm-metadata-export/
[Code Climate Link]: https://codeclimate.com/github/sandfoxme/phpstorm-metadata-export

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.

[PhpStorm Advanced Metadata]: https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata
[Pimple Container Dumper]: https://github.com/Sorien/silex-pimple-dumper

## Installation

Install by composer

```sh
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:

* [PSR-15] (Mezzio, Slim 4, ...)
* [Slim 3]

[Pimple]:   https://github.com/silexphp/Pimple
[PHP-DI]:   http://php-di.org/
[Laminas ServiceManager]:   https://docs.laminas.dev/laminas-servicemanager/
[Slim 3]:   https://www.slimframework.com/
[PSR-15]:   https://www.php-fig.org/psr/psr-15/

## Example

```php
<?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][MIT License].

[MIT License]: ./LICENSE.md