Nelmio\Alice\FixtureBuilder\ExpressionLanguage\Parser\TokenParser\Chainable\FixtureMethodReferenceTokenParser::parse PHP Метод

parse() публичный Метод

public parse ( Token $token )
$token Nelmio\Alice\FixtureBuilder\ExpressionLanguage\Token
    public function parse(Token $token)
    {
        parent::parse($token);
        $values = preg_split('/->/', $token->getValue());
        if (2 !== count($values)) {
            throw ExpressionLanguageExceptionFactory::createForUnparsableToken($token);
        }
        $fixture = $this->parser->parse($values[0]);
        $method = $this->parser->parse(sprintf('<%s>', $values[1]));
        try {
            return new FixtureMethodCallValue($fixture, $method);
        } catch (\TypeError $exception) {
            throw ExpressionLanguageExceptionFactory::createForUnparsableToken($token, 0, $exception);
        }
    }

Usage Example

 /**
  * @dataProvider provideParser
  */
 public function testThrowsAnExceptionIfParsingReturnsAnUnexpectedResult(ParserInterface $decoratedParser)
 {
     try {
         $token = new Token('@user->getName()', new TokenType(TokenType::METHOD_REFERENCE_TYPE));
         $parser = new FixtureMethodReferenceTokenParser($decoratedParser);
         $parser->parse($token);
         $this->fail('Expected exception to be thrown.');
     } catch (ParseException $exception) {
         $this->assertEquals('Could not parse the token "@user->getName()" (type: METHOD_REFERENCE_TYPE).', $exception->getMessage());
         $this->assertEquals(0, $exception->getCode());
         $this->assertNotNull($exception->getPrevious());
     }
 }
FixtureMethodReferenceTokenParser