Глядя на исходный код Propel (библиотека PHP ORM), я нашел этот метод в файле propel / propel1 / runtime / lib / query / Criteria.php:
/**
* Set offset.
*
* @param int $offset An int with the value for offset. (Note this values is
* cast to a 32bit integer and may result in truncation)
*
* @return Criteria Modified Criteria object (for fluent API)
*/
public function setOffset($offset)
{
$this->offset = (int) $offset;
return $this;
}
Почему в комментариях к документу они говорят, что приведенное к int значение может привести к усечению ??? Не хранится ли int, например, 4000000000
в 64-битной среде? Собственно, так и есть, так почему эта «записка»?
Спасибо за внимание!
Максимальный и минимальный размер целого числа зависит от сборки PHP: 32 или 64 бита (операционная система и процессор также должны следовать)
За 32-битный PHP диапазон между]-2147483648, 2147483647[
За 64-битный PHP диапазон между]-9223372036854775808, 9223372036854775807[
Мой тест (32-битный PHP, 64-битный Windows 7, 64-битный Intel CORE i3):
<?php
$i = (int)2147483647;
var_dump($i);
Будет ли выход:
int(2147483647)
2-й тест (просто увеличить на 1 последнее значение)
<?php
$i = (int)2147483647;
var_dump($i);
Будет ли выход:
int(-2147483648)
Наконец: чтобы быть уверенным в максимальном значении целого числа в вашей среде, просто напечатайте это
var_dump(PHP_INT_MAX);
Других решений пока нет …