Це наступний великий реліз мови програмування PHP. Його випуск заплановано на 2023 рік. Сьогодні ми разберемо нові функціі, які будуть додані.
Додано функцію json_validate
У PHP 8.3 додано нову функцію json_validate, яка повертає true або false, якщо заданий рядок є коректним рядком JSON.
json_validate('[1, 2, 3]'); // true
json_validate('{1, 2, 3]'); // false
Нарешті! Бувай json_decode() ≠ null!
Докладніше тут: json_validate
Підтримка динамічної константи класу та члена Enum
PHP 8.3 і вище підтримує вибірку констант класів і об'єктів Enum з іменем змінної.
final class EaxmpleClass {
public const EXAMPLE_CONST = 1;
}
$constName = 'EXAMPLE_CONST';
echo EaxmpleClass::{$constName};
Те саме для Enum
enum ExampleEnum: int {
case Amount = 42;
}
$enumName = 'Amount';
echo ExampleEnum::{$enumName}->value;
Стара функція \constant() залишилась.
Як на мене, є більш важливі речі які слід було б зробити, але маємо що маємо.
Докладніше тут: тик
Нова функція gc_status()
Функція gc_status() повертає статистику роботи збирача сміття PHP, яка містить інформацію про те, чи запущений збирач сміття, чи є він захищеним від втрати даних та який обсяг буфера використовується. Ці дані можуть бути корисними при налагодженні довготривалих PHP-додатків з метою виявлення та оптимізації використання пам'яті.
Це дуже корисна функція, коли вам потрібно оптимізувати дуже важкий скрипт, який використовує багато пам'яті.
Докладніше тут: тик
Нові функціі для \Random\Randomizer
Клас \Random\Randomizer в PHP 8.3 підтримує новий метод getBytesFromString, який повертає випадкову послідовність чисел запитуваної довжини (параметр $length), що містить лише байти із запитуваної серії байт (параметр $string)
Він не може ефективно перемішувати багатобайтові символи, такі як емодзі, CJK-символи та східні/індоєвропейські символи.
Приклад застосування:
$randomizer = new Random\Randomizer();
$symbolList = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';
$randomizer->getBytesFromString($symbolList, 5); // "5YH8T"
$randomizer->getBytesFromString($symbolList, 5); // "XBZ9P"
Детальніше тут: тик
Розширення Random у PHP 8.3 додає методи \Random\Randomizer::getFloat() та \Random\Randomizer::nextFloat(), які генерують випадкове значення з плаваючою комою.
Також з'явилося нове зчислення \Random\IntervalBoundary Enum, яке можна використовувати як параметр методу getFloat, щоб вказати, чи повинні межі $min і $max бути включними чи ні.
Приклад застосування:
$randomizer = new Random\Randomizer();
$randomizer->getFloat(0, 10, \Random\IntervalBoundary::OpenOpen); // 9.3835746900717
$randomizer->getFloat(0, 10, \Random\IntervalBoundary::OpenOpen); // 3.065611591453
Новий метод \Random\Randomizer::nextFloat() функціонально ідентичний методу \Random\Randomizer::getFloat(0, 1, \Random\IntervalBoundary::ClosedOpen).
JavaScript Math.random() також подібний до \Random\Randomizer::nextFloat(), оскільки обидва вони повертають випадкове значення у діапазоні 0 <= та < 1.
Приклад застосування:
$randomizer = new Random\Randomizer();
$randomizer->nextFloat(); // 0.21185336351144
Детальніше тут: тик
Інформація взята з php.watch