Перетворення недесяткових рядків за допомогою вдосконаленого методу toInteger() у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 квітня, 2025
Оновлений метод toInteger() класу Stringable у Laravel тепер приймає параметр основи, що значно спрощує перетворення рядкових значень із шістнадцяткової, двійкової та восьмеричної систем. Чи готові ви дізнатися, як ця функція може підвищити ефективність вашої роботи з числами у додатках Laravel? Читайте далі, щоб дізнатися більше про нові можливості маніпуляцій зі строками!

Laravel вдосконалив свій клас Stringable, додавши до методу toInteger() параметр бази. Це значно спростило обробку шістнадцяткових, двійкових та вісімкових рядків у ваших застосунках.

Розробникам часто потрібно перетворювати рядкові представлення чисел у різних системах числення. Раніше для цього доводилося виходити за рамки флюентних операцій Laravel і використовувати рідні функції PHP. Оновлений метод toInteger() дозволяє виконувати ці перетворення безперешкодно в рамках ланцюгів маніпуляцій зі рядками.

Ось приклад роботи методу:

// Перетворення шістнадцяткового рядка на ціле число
$value = Str::of('2F')->toInteger(16); // Повертає 47
// Перетворення двійкового рядка на ціле число
$value = Str::of('11001')->toInteger(2); // Повертає 25
// Перетворення вісімкового рядка на ціле число
$value = Str::of('644')->toInteger(8); // Повертає 420

Це нововведення особливо корисне при роботі з такими форматами, як кольорові коди, двійкові дані або налаштування конфігурацій, що використовують не десятинні числові системи. Розгляньте цей приклад обробки шістнадцяткового кольору:

// Раніше: вихід за межі флюентного ланцюга
$hexColor = '#3f8ac2';
$stringable = Str::of($hexColor)->after('#');
$colorValue = intval($stringable, 16);

// Тепер: підтримка флюентності
$colorValue = Str::of($hexColor)
    ->after('#')
    ->toInteger(16);

Цей метод легко інтегрується з іншими функціями маніпуляції рядками, що дозволяє виконувати складніші операції:

// Парсинг та перетворення шістнадцяткового значення з даних з датчика
$data = 'Sensor: reading=0x4B, status=0x03';

$reading = Str::of($data)
    ->between('reading=', ',')  // Витягує "0x4B"
    ->replaceFirst('0x', '')    // Видаляє префікс "0x"
    ->toInteger(16);            // Перетворює в десяткову (75)

Метод дотримується тих самих принципів, що й рідна функція intval() у PHP, і параметр бази підтримує значення від 2 до 36, що надає вам гнучкість при обробці чисел у різних системах, зберігаючи елегантний флюентний синтаксис Laravel