/** * @param ClassName|null $validatorNamespace * @param boolean|null $useNativeCallable */ public function __construct(ClassName $validatorNamespace = null, $useNativeCallable = null) { $this->typeCheck = TypeCheck::get(__CLASS__, func_get_args()); if (null === $validatorNamespace) { $validatorNamespace = ClassName::fromAtoms(array('Typhoon'), true); } if (null === $useNativeCallable) { $useNativeCallable = true; } $this->validatorNamespace = $validatorNamespace; $this->useNativeCallable = $useNativeCallable; }
/** * @param TyphaxASTGenerator|null $typeGenerator * @param TypeRenderer|null $typeRenderer */ public function __construct(TyphaxASTGenerator $typeGenerator = null, TypeRenderer $typeRenderer = null) { $this->typeCheck = TypeCheck::get(__CLASS__, func_get_args()); if (null === $typeGenerator) { $typeGenerator = new TyphaxASTGenerator(); } if (null === $typeRenderer) { $typeRenderer = new TypeRenderer(); } $this->typeGenerator = $typeGenerator; $this->typeRenderer = $typeRenderer; $this->argumentExpression = new Variable(new Identifier('argument')); $this->indexExpression = new Variable(new Identifier('index')); $this->validatorNamespace = ClassName::fromAtoms(array('Typhoon'), true); }
/** * @param array<string|array> &$tokens * * @return ClassName */ protected function parseClassName(array &$tokens) { $this->typeCheck->parseClassName(func_get_args()); do { $token = $this->normalizeToken(next($tokens)); } while (T_WHITESPACE === $token[0]); return ClassName::fromAtoms(array($token[1]), false); }
/** * @param RuntimeConfiguration $configuration * @param ClassDefinition $classDefinition * * @return ClassName */ protected function validatorClassName(RuntimeConfiguration $configuration, ClassDefinition $classDefinition) { $this->typeCheck->validatorClassName(func_get_args()); $classNameAtoms = $configuration->validatorNamespace()->atoms(); $classNameAtoms[] = 'Validator'; if ($classDefinition->className()->hasParent()) { $classNameAtoms = array_merge($classNameAtoms, $classDefinition->className()->parent()->atoms()); } $classNameAtoms[] = sprintf('%sTypeCheck', $classDefinition->className()->shortName()->string()); return ClassName::fromAtoms($classNameAtoms, true); }