Liberazione di lingua di prugrammazione PHP 8.2

Dopu un annu di sviluppu, a liberazione di a lingua di prugrammazione PHP 8.2 hè stata presentata. U novu ramu include una seria di funzioni novi, è ancu parechji cambiamenti chì rompenu a cumpatibilità.

Migliuramenti chjave in PHP 8.2:

  • Aggiunta a capacità di marcà una classa cum'è sola lettura. Pruprietà in tali classi pò esse stabilitu solu una volta, dopu chì ùn saranu micca dispunibili per cambià. Prima, e proprietà di classi individuali puderanu esse marcate solu di lettura, ma avà pudete attivà stu modu per tutte e proprietà di classi in una volta. Specificà a bandiera "lettura solu" à u livellu di classa ancu bluccà l'aghjunzione dinamica di pruprietà à a classe. classa sola lettura Post { public function __construct ( stringa publica $ title, Public Author $ autore, ) {} } $ post = new Post (/* … */); $post->unknown = 'sbagliatu'; // Errore: Ùn pò micca creà pruprietà dinamica Post::$unknown
  • Добавлены отдельные типы «true», «false» и «null», которые могут принимать только одно допустимое значение и использоваться, например, для возвращения функцией признака завершения с ошибкой или пустого значения. Ранее «true», «false» и «null» могли использоваться только в связке с другими типами (например, «string|false»), а теперь могут применяться отдельно: function alwaysFalse(): false { return false; }
  • Fornitu a capacità di filtrà paràmetri sensittivi in ​​l'output di traccia di stack à u mumentu di un errore. Cutting out certa infurmazione pò esse dumandata quandu l'infurmazioni nantu à l'errori chì si trovanu sò automaticamente mandati à i servizii di terzu chì traccianu i prublemi è informanu i sviluppatori nantu à elli. Per esempiu, pudete escludiri paràmetri da a traccia chì includenu nomi d'utilizatore, password è variabili di l'ambiente. test di funzione( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Errore'); } test('foo', 'password', 'baz'); Errore fatale: Eccezzioni Uncaught: Errore in test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {principale} ghjittatu in test.php in linea 8
  • Разрешено определение констант в типажах (trait, механизм для повторного использования кода). Доступ к константам, определённым в типаже, можно получить через класс, который использует типаж (но не через имя типажа). trait Foo { public const CONSTANT = 1; public function bar(): int { return self::CONSTANT; // Fatal error } } class Bar { use Foo; } var_dump(Bar::CONSTANT); // 1
  • Добавлена возможность задания типов в дизъюнктивной нормальной форме (DNF, Disjunctive Normal Form), позволяющей совместить объединение типов (коллекции из двух и более типов) и пересечение типов (типы, значения которых подпадают одновременно под несколько типов). class Foo { public function bar((A&B)|null $entity) { if ($entity === null) { return null; } return $entity; } }
  • Предложено новое расширение «Random» c функциями и классами для генерации псеводослучайных чисел и последовательностей. Модуль предоставляет объектно-ориентированный интерфейс, позволяет выбирать разные движки для генерации псеводослучайных чисел, в том числе пригодные для применения в криптографии, и предоставляет вспомогательные функции, например, для случайного перемешивания массивов и строк, выбора случайных ключей массива, одновременного использования нескольких генераторов со своим независимым состоянием. $rng = $is_production ? new Random\Engine\Secure() : new Random\Engine\Mt19937(1234); $randomizer = new Random\Randomizer($rng); $randomizer->shuffleString(‘foobar’);
  • Implementata cunversione di casu indipendente da a locale. Funzioni cum'è strtolower () è strtoupper () avà sempre cunvertisce u casu di caratteri in a gamma ASCII, cum'è quandu si stabilisce a locale à "C".
  • Добавлены новые функции: mysqli_execute_query, curl_upkeep, memory_reset_peak_usage, ini_parse_quantity, libxml_get_external_entity_loader, sodium_crypto_stream_xchacha20_xor_ic, openssl_cipher_key_length.
  • Добавлены новые методы: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Объявлена устаревшей возможность динамического создания свойств в классе. В PHP 9.0 обращение к свойствам, изначально не определённым в классе, будет приводить к ошибке (ErrorException). Классы, предоставляющие методы __get и __set для создания свойств, или динамические свойства в stdClass продолжат работать без изменений, прекратится поддержка только неявной работы с несуществующими свойствами для того чтобы защитить разработчика от скрытых ошибок. Для сохранения работы старого кода предложен атрибут «#[AllowDynamicProperties]», разрешающий использование динамических свойств.
  • A capacità di rimpiazzà i valori variabili in stringhe cù l'espressioni "${var}" è ${(var)}" hè stata deprecata. U supportu per i sustituzzioni di "{$var}" è "$var" cumunimenti usati hè statu mantinutu. Per esempiu: "Hello {$world}"; OK "Hello $world"; OK "Salutu ${world}"; Deprecated: Using ${} in strings hè obsoletu
  • Callables parzialmente supportati deprecati chì ponu esse chjamati via "call_user_func($callable)" ma ùn supportanu micca chjamà in a forma "$callable()": "self::method" "parent::method" "static ::method" [ "self", "metudu"] ["parent", "metudu"] ["static", "metudu"] ["Foo", "Bar::metudu"] [nova Foo, "Bar::metudu"]
  • В настройки добавлена директива error_log_mode, позволяющая определить режим доступа к логу с ошибками.

Source: opennet.ru

Add a comment