_name = $name; } /** * Checks if the value is not a numeric value * * @throws \InvalidArgumentException * @param mixed $value Value to check * @return void */ protected function checkNumeric($value) { if (!is_numeric($value)) { throw new InvalidArgumentException(sprintf( 'Cannot convert value of type `%s` to integer', getTypeName($value) )); } } /** * Convert integer data into the database format. * * @param mixed $value The value to convert. * @param \Cake\Database\Driver $driver The driver instance to convert with. * @return int|null */ public function toDatabase($value, Driver $driver) { if ($value === null || $value === '') { return null; } $this->checkNumeric($value); return (int)$value; } /** * Convert integer values to PHP integers * * @param mixed $value The value to convert. * @param \Cake\Database\Driver $driver The driver instance to convert with. * @return int|null */ public function toPHP($value, Driver $driver) { if ($value === null) { return $value; } return (int)$value; } /** * {@inheritDoc} * * @return array */ public function manyToPHP(array $values, array $fields, Driver $driver) { foreach ($fields as $field) { if (!isset($values[$field])) { continue; } $this->checkNumeric($values[$field]); $values[$field] = (int)$values[$field]; } return $values; } /** * Get the correct PDO binding type for integer data. * * @param mixed $value The value being bound. * @param \Cake\Database\Driver $driver The driver. * @return int */ public function toStatement($value, Driver $driver) { return PDO::PARAM_INT; } /** * Marshals request data into PHP floats. * * @param mixed $value The value to convert. * @return int|null Converted value. */ public function marshal($value) { if ($value === null || $value === '') { return null; } if (is_numeric($value)) { return (int)$value; } return null; } }