_name = $name; } /** * Convert bool data into the database format. * * @param mixed $value The value to convert. * @param \Cake\Database\Driver $driver The driver instance to convert with. * @return bool|null */ public function toDatabase($value, Driver $driver) { if ($value === true || $value === false || $value === null) { return $value; } if (in_array($value, [1, 0, '1', '0'], true)) { return (bool)$value; } throw new InvalidArgumentException('Cannot convert value to bool'); } /** * Convert bool values to PHP booleans * * @param mixed $value The value to convert. * @param \Cake\Database\Driver $driver The driver instance to convert with. * @return bool|null */ public function toPHP($value, Driver $driver) { if ($value === null) { return null; } if (is_string($value) && !is_numeric($value)) { return strtolower($value) === 'true' ? true : false; } return !empty($value); } /** * Get the correct PDO binding type for bool data. * * @param mixed $value The value being bound. * @param \Cake\Database\Driver $driver The driver. * @return int */ public function toStatement($value, Driver $driver) { if ($value === null) { return PDO::PARAM_NULL; } return PDO::PARAM_BOOL; } /** * Marshalls request data into PHP booleans. * * @param mixed $value The value to convert. * @return bool|null Converted value. */ public function marshal($value) { if ($value === null) { return null; } if ($value === 'true') { return true; } if ($value === 'false') { return false; } return !empty($value); } }