Започна алфа-тестироването на PHP 8.2

Представен първият алфа релиз на новата версия на езика за програмиране PHP 8.2. Пускането е насрочено за 24 ноември. Основните нововъведения, които вече са достъпни за тестване или са планирани за реализиране в PHP 8.2:

  • Добавени са отделни типове "false" и "null", които могат да се използват, например, за връщане от функция на индикация за грешка или празна стойност. Преди "false" и "null" можеха да се използват само в комбинация с други типове (например, "string|false"), а сега могат да се прилагат самостоятелно: function alwaysFalse(): false { return false; }
  • Добавена е възможността да се маркира клас като достъпен само за четене. Свойствата в такива класове могат да бъдат зададени само веднъж, след което не могат да бъдат променяни. Преди само отделни свойства на класа можеха да се маркират като само за четене, а сега може едновременно да се включи този режим за всички свойства на класа. Указването на флага "readonly" на ниво клас също блокира динамичното добавяне на свойства към класа. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = ‘wrong’; // Грешка: Не може да се създаде динамично свойство Post::$unknown
  • Обявена е за остаряла възможността за динамично създаване на свойства в класа (както "post->unknown" в примера по-горе). В PHP 9.0 обаждането до свойства, които първоначално не са определени в класа, ще води до грешка (ErrorException). Класовете, предоставящи методи __get и __set за създаване на свойства, или динамични свойства в stdClass, ще продължат да работят без промени, а поддръжката за неявно работа с не съществуващи свойства ще бъде прекратена, за да се защити разработчикът от скрити грешки. За да се запази работата на стария код, е предложен атрибут "#[AllowDynamicProperties]", който разрешава използването на динамични свойства.
  • Възможността за филтриране на конфиденциални параметри в данните от стека на на стека, извеждани по време на грешка, е предоставена. Изключването на определена информация може да е необходимо, когато данните за възникващи грешки автоматично се изпращат на външни услуги, които следят проблемите и информират разработчиците за тях. Например, параметри, включващи имена на потребители, пароли и променливи на средата, могат да бъдат изключени от трасировката. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'password', 'baz'); Fatal error: Uncaught Exception: Error in test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} thrown in test.php on line 8
  • Обявена е за остаряла възможността за замяна на стойности на променливи в низове чрез изрази '${var}' и ${(var)}. Поддръжката на обичайно използваните замени '{$var}' и '$var' е запазена. Например: 'Hello {$world}'; OK 'Hello $world'; OK 'Hello ${world}'; Deprecated: Using ${} in strings is deprecated
  • Обявени са за остарели частично поддържаните извикваеми обекти (callable), които могат да бъдат извиквани чрез 'call_user_func($callable)', но не поддържат извикване в формата '$callable()': 'self::method' 'parent::method' 'static::method' ['self', 'method'] ['parent', 'method'] ['static', 'method'] ['Foo', 'Bar::method'] [new Foo, 'Bar::method']
  • Реализирано е независимо от локализацията преобразуване на регистъра на символите. Функции, подобни на strtolower() и strtoupper(), сега винаги преобразуват регистъра на символите в диапазона ASCII както при задаване на локализация "C".

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster