hyperf-helper / dependency
hyperf hylper dependency
Installs: 3 076
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: >=8.1
- hyperf/di: ~3.1
Requires (Dev)
- phpstan/phpstan: ^1.0
- swoole/ide-helper: ^4.5
Suggests
- swow/swow: Required to create swow components.
This package is auto-updated.
Last update: 2025-02-26 02:59:48 UTC
README
Badges
Introduction
Easy, simple and elegant way to add dependencies in Hyperf
Start
composer require hyperf-helper/dependency
Annotation Params
name | type | default | comment |
---|---|---|---|
identifier | string | '' | Dependency identifier. if empty, default value is the annotation className |
priority | int | 1 | If there are multiple identical Dependency identifiers, the one with the highest priority will be selected |
How to use
- We need to add dependencies collected from
DependencyCollector
toContainer
<?php # config/container.php <?php /** * Initialize a dependency injection container that implemented PSR-11 and return the container. */ 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 */ use Hyperf\Di\Container; use Hyperf\Di\Definition\DefinitionSourceFactory; use Hyperf\Utils\ApplicationContext; $container = new Container((new DefinitionSourceFactory(true))()); if (! $container instanceof \Psr\Container\ContainerInterface) { throw new RuntimeException('The dependency injection container is invalid.'); } /********* start ********/ // Add this line between `new Container` and `setContainer()` \HyperfHelper\Dependency\Annotation\Collector\DependencyCollector::walk([$container, 'define']); /********* end ********/ return ApplicationContext::setContainer($container);
- Use
Dependency
to annotate the dependent class you want to define
declare(strict_types=1); namespace App\Service; use HyperfHelper\Dependency\Annotation\Dependency; // add Dependency annotation #[Dependency()] class ExampleService implements ExampleServiceInterface { // anything }
- Happy using
Inject
everywhere
<?php declare(strict_types=1); namespace App\Controller; use Hyperf\Di\Annotation\Inject; use App\Service\ExampleServiceInterface; class FooController { #[Inject] protected ExampleServiceInterface $service; }