for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
/**
* This file is part of the Ray.Di package.
*
* @license http://opensource.org/licenses/MIT MIT
*/
namespace Ray\Di;
use Doctrine\Common\Annotations\Reader;
use Ray\Di\Di\Qualifier;
final class InjectionPoint implements InjectionPointInterface
{
* @var \ReflectionParameter
private $parameter;
* @var Reader
private $reader;
public function __construct(\ReflectionParameter $parameter, Reader $reader)
$this->parameter = $parameter;
$this->reader = $reader;
}
* {@inheritdoc}
public function getParameter() : \ReflectionParameter
return $this->parameter;
public function getMethod() : \ReflectionMethod
$class = $this->parameter->getDeclaringClass();
if (! $class instanceof \ReflectionClass) {
throw new \LogicException($this->parameter->getName());
$this->parameter->name
getName()
$method = $this->parameter->getDeclaringFunction()->getShortName();
return new \ReflectionMethod($class->name, $method);
public function getClass() : \ReflectionClass
if ($class instanceof \ReflectionClass) {
return $class;
public function getQualifiers() : array
$qualifiers = [];
$annotations = $this->reader->getMethodAnnotations($this->getMethod());
foreach ($annotations as $annotation) {
$qualifier = $this->reader->getClassAnnotation(
new \ReflectionClass($annotation),
Qualifier::class
);
if ($qualifier instanceof Qualifier) {
$qualifiers[] = $annotation;
return $qualifiers;