atLeastPhp55 = \version_compare(PHP_VERSION, '5.5', '>='); } /** * Validate use of empty in PHP < 5.5. * * @throws ParseErrorException if the user used empty with anything but a variable * * @param Node $node */ public function enterNode(Node $node) { if ($this->atLeastPhp55) { return; } if (!$node instanceof Empty_) { return; } if (!$node->expr instanceof Variable) { $msg = \sprintf('syntax error, unexpected %s', $this->getUnexpectedThing($node->expr)); throw new ParseErrorException($msg, $node->expr->getLine()); } } private function getUnexpectedThing(Node $node) { switch ($node->getType()) { case 'Scalar_String': case 'Scalar_LNumber': case 'Scalar_DNumber': return \json_encode($node->value); case 'Expr_ConstFetch': return (string) $node->name; default: return $node->getType(); } } }