Give.php 907 B

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace Illuminate\Container\Attributes;
  3. use Attribute;
  4. use Illuminate\Contracts\Container\Container;
  5. use Illuminate\Contracts\Container\ContextualAttribute;
  6. #[Attribute(Attribute::TARGET_PARAMETER)]
  7. class Give implements ContextualAttribute
  8. {
  9. /**
  10. * Provide a concrete class implementation for dependency injection.
  11. *
  12. * @template T
  13. *
  14. * @param class-string<T> $class
  15. * @param array|null $params
  16. */
  17. public function __construct(
  18. public string $class,
  19. public array $params = [],
  20. ) {
  21. }
  22. /**
  23. * Resolve the dependency.
  24. *
  25. * @param self $attribute
  26. * @param \Illuminate\Contracts\Container\Container $container
  27. * @return mixed
  28. */
  29. public static function resolve(self $attribute, Container $container): mixed
  30. {
  31. return $container->make($attribute->class, $attribute->params);
  32. }
  33. }