You are here

public function Target::__construct in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php \Doctrine\Common\Annotations\Annotation\Target::__construct()

Annotation constructor.

Parameters

array $values:

Throws

\InvalidArgumentException

File

vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php, line 76

Class

Target
Annotation that can be used to signal to the parser to check the annotation target during the parsing process.

Namespace

Doctrine\Common\Annotations\Annotation

Code

public function __construct(array $values) {
  if (!isset($values['value'])) {
    $values['value'] = null;
  }
  if (is_string($values['value'])) {
    $values['value'] = array(
      $values['value'],
    );
  }
  if (!is_array($values['value'])) {
    throw new \InvalidArgumentException(sprintf('@Target expects either a string value, or an array of strings, "%s" given.', is_object($values['value']) ? get_class($values['value']) : gettype($values['value'])));
  }
  $bitmask = 0;
  foreach ($values['value'] as $literal) {
    if (!isset(self::$map[$literal])) {
      throw new \InvalidArgumentException(sprintf('Invalid Target "%s". Available targets: [%s]', $literal, implode(', ', array_keys(self::$map))));
    }
    $bitmask |= self::$map[$literal];
  }
  $this->targets = $bitmask;
  $this->value = $values['value'];
  $this->literal = implode(', ', $this->value);
}