123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <?php
- declare(strict_types=1);
- /**
- * This file is part of Hyperf.
- *
- * @link https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact group@hyperf.io
- * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
- namespace Hyperf\Di;
- use Hyperf\Di\Annotation\AnnotationCollector;
- use Hyperf\Di\Annotation\AspectCollector;
- use Hyperf\Di\Annotation\InjectAspect;
- use Hyperf\Di\Aop\AstVisitorRegistry;
- use Hyperf\Di\Aop\PropertyHandlerVisitor;
- use Hyperf\Di\Aop\ProxyCallVisitor;
- use Hyperf\Di\Aop\RegisterInjectPropertyHandler;
- class ConfigProvider
- {
- public function __invoke(): array
- {
- // Register AST visitors to the collector.
- if (! AstVisitorRegistry::exists(PropertyHandlerVisitor::class)) {
- AstVisitorRegistry::insert(PropertyHandlerVisitor::class);
- }
- if (! AstVisitorRegistry::exists(ProxyCallVisitor::class)) {
- AstVisitorRegistry::insert(ProxyCallVisitor::class);
- }
- // Register Property Handler.
- RegisterInjectPropertyHandler::register();
- return [
- 'dependencies' => [
- MethodDefinitionCollectorInterface::class => MethodDefinitionCollector::class,
- ClosureDefinitionCollectorInterface::class => ClosureDefinitionCollector::class,
- ],
- 'aspects' => [
- InjectAspect::class,
- ],
- 'annotations' => [
- 'scan' => [
- 'paths' => [
- __DIR__,
- ],
- 'collectors' => [
- AnnotationCollector::class,
- AspectCollector::class,
- ],
- ],
- 'ignore_annotations' => [
- 'mixin',
- ],
- ],
- ];
- }
- }
|