25 public function validate( $name, $value, array $settings, array $options ) {
26 if ( is_int( $value ) ) {
28 } elseif ( is_float( $value ) ) {
33 $ret = intval( $value );
34 if ( $ret - $value !== 0.0 ) {
37 ->params( gettype( $value ) ),
38 $name, $value, $settings, $options
41 } elseif ( $options[ self::OPT_ENFORCE_JSON_TYPES ] ??
false ) {
44 ->params( gettype( $value ) ),
45 $name, $value, $settings, $options
48 if ( is_array( $value ) || !preg_match(
'/^[+-]?\d+$/D', $value ) ) {
49 $this->
fatal(
'badinteger', $name, $value, $settings, $options );
51 $ret = intval( $value, 10 );
56 if ( $ret === PHP_INT_MAX || $ret === PHP_INT_MIN ) {
57 $tmp = ( $ret < 0 ?
'-' :
'' ) . ltrim( $value,
'-0' );
58 if ( $tmp !== (
string)$ret ) {
59 $this->
failure(
'badinteger', $name, $value, $settings, $options );
63 return $this->
checkRange( $ret, $name, $value, $settings, $options );