първото бета издание на новата версия на езика за програмиране PHP 8. Пускането е насрочено за 26 ноември. В същото време са създадени коригиращи версии на PHP 7.4.9, 7.3.21 и
7.2.33, в които са отстранени натрупаните грешки и уязвимости.
Основни PHP 8:
- , използването на който ще повиши производителността.
- именовани аргументи на функции, позволяващи предаване на стойности на функцията, свързани с имената, т.е. аргументите могат да се предават в произволен ред и да се определят незадължителни аргументи. Например, „array_fill(start_index: 0, num: 100, value: 50)“.
- При извикване на методи използването на оператора „?“, който позволява извикването само, ако методът присъства, което спестява ненужни проверки за връщане на стойност „null“. Например, „$dateAsString = $booking->getStartDate()?->asDateTimeString()“;
- Поддръжка , определящи колекции от два и повече типа (например „public function foo(Foo|Bar $input): int|float;“).
- Поддръжка (анотации), позволяващи прикрепяне на метаданни (например информация за типовете) към класовете без използване на синтаксис на Docblock.
- Поддръжка на изрази , които, за разлика от switch, могат да връщат стойности, поддържат комбиниране на условия, използват строго сравнение на типове и не изискват посочване на „break“.
$result = match($input) {
0 => „hello“,
'1', '2', '3' => „world“,
}; - за определяне на класове, позволяващ комбиниране на определението на конструктора и свойствата.
- Нов тип връщани стойности — .
- Нов тип — , който може да се използва за определяне на параметри с различни типове в функция.
- Израз за обработка на изключения.
- за създаване на обекти, които могат да бъдат жертви при събиране на боклук (например, за съхранение на незадължителни кешове).
- за използване на израза „::class“ за обекти (аналог на извикването на get_class()).
- определяне в блока catch на изключения, които не са свързани с променливи.
- оставяне на запетая след последния елемент в списъка на параметрите на функция.
- Нов интерфейс за идентифициране на всякакви типове низове или данни, които могат да бъдат преобразувани в низ (за които е достъпен метод __toString()).
- Нова функция , опростен аналог на strpos за определяне на присъствие на подниз, както и функциите str_starts_with() и str_ends_with() за проверка на съвпадения в началото и края на низ.
- Добавена функция , която извършва операция на деление без да изведе грешка в случай на деление на нула.
- логика на свързване на низове. Например, изразът ‘echo «sum: » . $a + $b’ преди се интерпретираше като ‘echo («sum: » . $a) + $b’, а в PHP 8 ще бъде обработен като ‘echo «sum: » . ($a + $b)’.
- проверка на аритметични и битови операции, например, изразите «[] % [42]» и «$object + 4» ще предизвикат грешка.
- стабилен алгоритъм за сортиране, при който при различни изпълнения се запазва реда на повторенията на идентични стойности.
Източник: opennet.ru
