Checks whether a number can be treated like an int.
public static canBeTreatedAsInt ( string $value ) : boolean | ||
$value | string | string representation of a certain value |
리턴 | boolean |
/** * Fills in a value of a binding and truncates the * resulting string if necessary. * * @param mixed $value bound value * * @return string */ protected function fillInValue($value) { if (is_null($value)) { $value = 'NULL'; } $value = strval($value); if (strlen($value) > $this->strLen) { $value = substr($value, 0, $this->strLen) . '... '; } if (!\RedBeanPHP\QueryWriter\AQueryWriter::canBeTreatedAsInt($value) && $value !== 'NULL') { $value = '\'' . $value . '\''; } return $value; }
/** * @see QueryWriter::scanType */ public function scanType($value, $flagSpecial = FALSE) { $this->svalue = $value; if ($value === INF) { return self::C_DATATYPE_TEXT; } if ($flagSpecial && $value) { if (preg_match('/^\\d{4}\\-\\d\\d-\\d\\d$/', $value)) { return PostgreSQL::C_DATATYPE_SPECIAL_DATE; } if (preg_match('/^\\d{4}\\-\\d\\d-\\d\\d\\s\\d\\d:\\d\\d:\\d\\d(\\.\\d{1,6})?$/', $value)) { return PostgreSQL::C_DATATYPE_SPECIAL_DATETIME; } if (preg_match('/^\\([\\d\\.]+,[\\d\\.]+\\)$/', $value)) { return PostgreSQL::C_DATATYPE_SPECIAL_POINT; } if (preg_match('/^\\[\\([\\d\\.]+,[\\d\\.]+\\),\\([\\d\\.]+,[\\d\\.]+\\)\\]$/', $value)) { return PostgreSQL::C_DATATYPE_SPECIAL_LSEG; } if (preg_match('/^\\<\\([\\d\\.]+,[\\d\\.]+\\),[\\d\\.]+\\>$/', $value)) { return PostgreSQL::C_DATATYPE_SPECIAL_CIRCLE; } if (preg_match('/^\\((\\([\\d\\.]+,[\\d\\.]+\\),?)+\\)$/', $value)) { return PostgreSQL::C_DATATYPE_SPECIAL_POLYGON; } if (preg_match('/^\\-?(\\$|€|¥|£)[\\d,\\.]+$/', $value)) { return PostgreSQL::C_DATATYPE_SPECIAL_MONEY; } } if (is_float($value)) { return self::C_DATATYPE_DOUBLE; } if ($this->startsWithZeros($value)) { return self::C_DATATYPE_TEXT; } if ($value === FALSE || $value === TRUE || $value === NULL || is_numeric($value) && AQueryWriter::canBeTreatedAsInt($value) && $value < 2147483648.0 && $value > -2147483648.0) { return self::C_DATATYPE_INTEGER; } elseif (is_numeric($value)) { return self::C_DATATYPE_DOUBLE; } else { return self::C_DATATYPE_TEXT; } }
/** * Binds parameters. This method binds parameters to a\PDOStatement for * Query Execution. This method binds parameters as NULL, INTEGER or STRING * and supports both named keys and question mark keys. * * @param \PDOStatement $statement \PDO Statement instance * @param array $bindings values that need to get bound to the statement * * @return void */ protected function bindParams($statement, $bindings) { foreach ($bindings as $key => &$value) { if (is_integer($key)) { if (is_null($value)) { $statement->bindValue($key + 1, NULL, \PDO::PARAM_NULL); } elseif (!$this->flagUseStringOnlyBinding && AQueryWriter::canBeTreatedAsInt($value) && $value < 2147483648) { $statement->bindParam($key + 1, $value, \PDO::PARAM_INT); } else { $statement->bindParam($key + 1, $value, \PDO::PARAM_STR); } } else { if (is_null($value)) { $statement->bindValue($key, NULL, \PDO::PARAM_NULL); } elseif (!$this->flagUseStringOnlyBinding && AQueryWriter::canBeTreatedAsInt($value) && $value < 2147483648) { $statement->bindParam($key, $value, \PDO::PARAM_INT); } else { $statement->bindParam($key, $value, \PDO::PARAM_STR); } } } }