You are here

private function DocParser::Values in Service Container 7

Same name and namespace in other branches
  1. 7.2 modules/providers/service_container_annotation_discovery/lib/Doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php \Doctrine\Common\Annotations\DocParser::Values()

Values ::= Array | Value {"," Value}* [","]

Return value

array

1 call to DocParser::Values()
DocParser::MethodCall in modules/providers/service_container_annotation_discovery/lib/Doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php
MethodCall ::= ["(" [Values] ")"]

File

modules/providers/service_container_annotation_discovery/lib/Doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php, line 846

Class

DocParser
A parser for docblock annotations.

Namespace

Doctrine\Common\Annotations

Code

private function Values() {
  $values = array(
    $this
      ->Value(),
  );
  while ($this->lexer
    ->isNextToken(DocLexer::T_COMMA)) {
    $this
      ->match(DocLexer::T_COMMA);
    if ($this->lexer
      ->isNextToken(DocLexer::T_CLOSE_PARENTHESIS)) {
      break;
    }
    $token = $this->lexer->lookahead;
    $value = $this
      ->Value();
    if (!is_object($value) && !is_array($value)) {
      $this
        ->syntaxError('Value', $token);
    }
    $values[] = $value;
  }
  foreach ($values as $k => $value) {
    if (is_object($value) && $value instanceof \stdClass) {
      $values[$value->name] = $value->value;
    }
    else {
      if (!isset($values['value'])) {
        $values['value'] = $value;
      }
      else {
        if (!is_array($values['value'])) {
          $values['value'] = array(
            $values['value'],
          );
        }
        $values['value'][] = $value;
      }
    }
    unset($values[$k]);
  }
  return $values;
}