Mwepụta asụsụ mmemme PHP 8.2

Mgbe otu afọ mmepe gasịrị, ewepụtara ntọhapụ nke asụsụ mmemme PHP 8.2. Alaka ọhụrụ ahụ gụnyere usoro atụmatụ ọhụrụ, yana ọtụtụ mgbanwe na-emebi ndakọrịta.

Nkwalite isi na PHP 8.2:

  • Agbakwunyere ike akara klas ka naanị ọgụgụ. Enwere ike ịtọ akụrụngwa dị na klaasị dị otu ugboro, emesia enweghị ike ịgbanwe ha. Na mbụ, enwere ike ịka akara klaasị n'otu n'otu na-agụ naanị, mana ugbu a ị nwere ike ime ka ọnọdụ a maka akụrụngwa klaasị niile ozugbo. Ikowa ọkọlọtọ "naanị ọgụgụ" na ọkwa klaasị na-egbochikwa akụrụngwa ịtinye ngwa ngwa na klaasị. Mbipute readonly klas {ọrụ ọha __construct( ọhaneze string $ aha, ọha odee $ ode akwụkwọ, ) {}} $post = ọhụrụ Post(/* … */); $post-> amaghị = 'ezighị ezi'; // Njehie: Enweghị ike ịmepụta ihe onwunwe dị ike Post::$ amaghị
  • Добавлены отдельные типы «true», «false» и «null», которые могут принимать только одно допустимое значение и использоваться, например, для возвращения функцией признака завершения с ошибкой или пустого значения. Ранее «true», «false» и «null» могли использоваться только в связке с другими типами (например, «string|false»), а теперь могут применяться отдельно: function alwaysFalse(): false { return false; }
  • Na-enye ike nzacha ndị nwere mmetụta n'ime nchịkọta nchịkọta n'oge njehie. Ebipụ ụfọdụ ozi nwere ike ịdị mkpa mgbe ezigara ozi gbasara njehie na-eme na-akpaghị aka na ọrụ ndị ọzọ na-agbaso nsogbu ma gwa ndị mmepe gbasara ha. Dịka ọmụmaatụ, ị nwere ike wepu paramita gụnyere aha njirimara, okwuntughe na mgbanwe gburugburu na nchọta. ule ọrụ ($ foo, #[\ SensitiveParameter] $ okwuntughe, $ baz ) {tuo ihe ọhụrụ ('Error'); } ule ('foo', 'paswọọdụ', 'baz'); Njehie na-egbu egbu: Esemokwu achọpụtaghị: Error na test.php: 8 Stack trace: #0 test.php(11): ule ('foo', Object(SensitiveParameterValue),'baz') #1 {isi} tụbara na test.php n'ahịrị 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’);
  • Ntugharị ikpe nọọrọ onwe ya na mpaghara etinyere ya. Ọrụ dị ka strtolower() na strtoupper() na-agbanwegharị okwu nke mkpụrụedemede na mpaghara ASCII dị ka a ga-asị na edobere na mpaghara "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]», разрешающий использование динамических свойств.
  • Akwụsịla ike iji okwu "${var}" na ${(var)} dochie ụkpụrụ mgbanwe n'ime eriri. Nkwado maka ngbanwe "{$var}" na "$var" a na-ejikarị eme ihe. Dịka ọmụmaatụ: "Ndewo {$ ụwa}"; OK "Ndewo $ụwa"; OK "Ndewo ${ụwa}"; Akwụsịla: Iji ${} na eriri akwụsịla
  • Kpọtụrụ akwadoro akụkụ ụfọdụ nke enwere ike ịkpọ site na "call_user_func($callable)" mana anaghị akwado ịkpọ oku n'ụdị "$callable()": "self :: usoro" " nne na nna:: usoro" "static" :: usoro " ["onwe", "usoro"] ["nne na nna", "Ụzọ"] [" static ", "Ụzọ"] ["Foo", "Ogwe ::Ụzọ"] [Foo ọhụrụ, "Ogwe:: usoro" ]
  • В настройки добавлена директива error_log_mode, позволяющая определить режим доступа к логу с ошибками.

isi: opennet.ru

Tinye a comment