src/uri-patterns/UriBuilderSetters.php (33 lines of code) (raw):

<?hh // strict /* * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ namespace Facebook\HackRouter; trait UriBuilderSetters { require extends UriBuilderBase; final public function setString(string $name, string $value): this { return $this->setValue(StringRequestParameter::class, $name, $value); } final public function setInt(string $name, int $value): this { return $this->setValue(IntRequestParameter::class, $name, $value); } final public function setEnum<T>( /* HH_FIXME[2053] */ classname<\HH\BuiltinEnum<T>> $class, string $name, T $value, ): this { $spec = $this->parameters[$name] ?? null; if ($spec && $spec is EnumRequestParameter<_>) { // Null case is handled by standard checks in setValue() $expected_class = $spec->getEnumName(); invariant( $class === $expected_class, 'Parameter "%s" is a %s, not a %s', $name, $expected_class, $class, ); } return $this->setValue( EnumRequestParameter::class, $name, $class::assert($value), ); } }