Антон Шевчук // Web-разработчик

Определение битности ОС из PHP // PHP


Иногда бывают и такие задачи, мое решение под катом, возможно кто знает более простой способ?

switch (true) {
    case (0x7FFF > (int)(0x7FFF+1)): // 2^15-1
        define('PHP_OS_BIT', 16);
        break;
    case (0x7FFFFFFF > (int)(0x7FFFFFFF+1)): // 2^31-1
        define('PHP_OS_BIT', 32);
        break;
    case (0x7FFFFFFFFFFFFFFF > (int)(0x7FFFFFFFFFFFFFFF+1)): // 2^63-1
        define('PHP_OS_BIT', 64);
        break;
    case (0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > (int)(0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF+1)): // 2^127-1
        define('PHP_OS_BIT', 128);
        break;
    default:
        define('PHP_OS_BIT', 8);
        break;
}
var_dump(PHP_OS);
var_dump(PHP_OS_BIT);

Можно использовать константу PHP_INT_MAX, но есть зависимость от версии PHP:

switch (PHP_INT_MAX) {
    case (0x7FFF): // 2^15-1
        define('PHP_OS_BIT', 16);
        break;
    case (0x7FFFFFFF): // 2^31-1
        define('PHP_OS_BIT', 32);
        break;
    case (0x7FFFFFFFFFFFFFFF): // 2^63-1
        define('PHP_OS_BIT', 64);
        break;
    case (0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF): // 2^127-1
        define('PHP_OS_BIT', 128);
        break;
    default:
        define('PHP_OS_BIT', 8);
        break;
}

© Антон Шевчук 2007-2023