*/ final class ScalarTypeResolver implements NodeTypeResolverInterface { /** * @return array> */ public function getNodeClasses() : array { return [Scalar::class]; } public function resolve(Node $node) : Type { if ($node instanceof DNumber) { return new ConstantFloatType((float) $node->value); } if ($node instanceof String_) { return new ConstantStringType((string) $node->value); } if ($node instanceof LNumber) { return new ConstantIntegerType((int) $node->value); } if ($node instanceof MagicConst) { return new ConstantStringType($node->getName()); } if ($node instanceof Encapsed) { return new StringType(); } if ($node instanceof EncapsedStringPart) { return new ConstantStringType($node->value); } throw new NotImplementedYetException(); } }