Rilis basa pemrograman PHP 8.2

Sawise setahun pembangunan, release saka PHP 8.2 basa program presented. Cabang anyar kalebu seri fitur anyar, uga sawetara owah-owahan sing break kompatibilitas.

Peningkatan utama ing PHP 8.2:

  • Nambahake kemampuan kanggo menehi tandha kelas minangka mung diwaca. Properti ing kelas kasebut bisa disetel mung sapisan, sawise iku ora bisa diganti. Sadurunge, properti kelas individu bisa ditandhani mung diwaca, nanging saiki sampeyan bisa ngaktifake mode iki kanggo kabeh properti kelas bebarengan. Nemtokake gendera "mung diwaca" ing tingkat kelas uga ngalangi properti saka ditambahake kanthi dinamis menyang kelas. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'salah'; // Error: Ora bisa nggawe dinamis property Post::$unknown
  • Added jinis kapisah "bener", "palsu" lan "null", kang bisa njupuk mung siji nilai bener lan digunakake, contone, kanggo bali fungsi karo flag mandap kesalahan utawa Nilai kosong. Sadurunge, "bener", "palsu" lan "null" mung bisa digunakake bebarengan karo jinis liyane (contone, "string|palsu"), nanging saiki padha bisa digunakake kanthi kapisah: function alwaysFalse(): false { return false ; }
  • Nyedhiyakake kemampuan kanggo nyaring paramΓ¨ter sensitif ing output tilak tumpukan nalika kesalahan. Ngilangi informasi tartamtu bisa uga dibutuhake nalika informasi babagan kesalahan sing kedadeyan kanthi otomatis dikirim menyang layanan pihak katelu sing nglacak masalah lan ngandhani pangembang babagan kasebut. Contone, sampeyan bisa ngilangi paramΓ¨ter sing kalebu jeneng panganggo, sandhi, lan variabel lingkungan saka dilacak. test fungsi ($foo, #[\SensitiveParameter] $sandi, $baz) {buwang Pengecualian anyar ('Error'); } test('foo', 'sandi', 'baz'); Kesalahan fatal: Pengecualian sing ora ditemokake: Kesalahan ing test.php: 8 Lacak tumpukan: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {utama} dibuwang ing test.php ing baris 8
  • Diijini kanggo nemtokake konstanta ing sipat (sipat, mekanisme kanggo nggunakake maneh kode). Konstanta sing ditetepake ing sipat bisa diakses liwat kelas sing nggunakake sipat kasebut (nanging ora liwat jeneng sipat). trait Foo { public const CONSTANT = 1; bar fungsi umum (): int { bali dhewe:: CONSTANT; // Fatal error }} class Bar { use Foo; } var_dump(Bar:: CONSTANT); // 1
  • Nambahake kemampuan kanggo nemtokake jinis ing wangun normal disjunctive (DNF, Formulir Normal Disjunctive), sing ngidini sampeyan nggabungake gabungan jinis (koleksi saka loro utawa luwih jinis) lan persimpangan jinis (jinis sing nilai ana ing sawetara jinis bebarengan). kelas Foo {bar fungsi umum((A&B)|null $entitas) {yen ($entitas === null) {bali null; } bali $entitas; }}
  • A extension anyar "Acak" wis ngajokaken karo fungsi lan kelas kanggo ngasilaken nomer pseudo-acak lan urutan. Modul menehi antarmuka obyek-oriented, ngijini sampeyan kanggo milih mesin beda kanggo ngasilaken nomer pseudo-acak, kalebu sing cocok kanggo nggunakake ing kriptografi, lan menehi fungsi tambahan, contone, kanggo acak nyawiji susunan lan strings, milih tombol Uploaded acak. nggunakake simultaneous sawetara generator karo negara sawijining dhewe. $rng = $is_production ? new Random\Engine\Secure() : new Random\Engine\Mt19937(1234); $randomizer = new Random\Randomizer($rng); $randomizer->shuffleString('foobar');
  • Ngleksanakake konversi kasus lokal-independen. Fungsi kaya strtolower () lan strtoupper () saiki tansah ngowahi cilik saka karakter ing sawetara ASCII minangka yen disetel kanggo "C" lokal.
  • Nambahake fungsi anyar: 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.
  • Ditambahake cara anyar: mysqli :: execute_query, ZipArchive :: getStreamIndex, ZipArchive :: getStreamName, ZipArchive :: clearError, ReflectionFunction :: isAnonymous, ReflectionMethod :: hasPrototype.
  • Kemampuan kanggo nggawe properti kanthi dinamis ing kelas wis ora digunakake. Ing PHP 9.0, ngakses properti sing ora ditemtokake ing kelas kasebut bakal nyebabake kesalahan (ErrorException). Kelas sing nyedhiyakake metode __get lan __set kanggo nggawe properti, utawa sifat dinamis ing stdClass bakal terus digunakake tanpa owah-owahan, mung karya implisit karo sifat sing ora ana sing bakal didhukung kanggo nglindhungi pangembang saka kewan omo sing didhelikake. Kanggo ngreksa karya kode lawas, atribut "#[AllowDynamicProperties]" diusulake, ngidini panggunaan sifat dinamis.
  • Kemampuan kanggo ngganti nilai variabel menyang string nggunakake ekspresi "${var}" lan ${(var)} wis ora digunakake. Dhukungan kanggo substitusi "{$var}" lan "$var" sing umum digunakake wis ditahan. Contone: "Halo {$world}"; OK "Hello $world"; OK "Hello ${world}"; Ditinggalake: Panganggone ${} ing strings ora digunakake
  • Callable sing didhukung sebagian sing ora bisa digunakake sing bisa diarani liwat "call_user_func ($callable)" nanging ora ndhukung panggilan ing wangun "$callable()": "self::method" "parent::method" "static" ::method "["self", "method"] ["parent", "method"] ["statis", "method"] ["Foo", "Bar::method"] [New Foo, "Bar: :method" ]
  • Arah error_log_mode wis ditambahake menyang setelan, ngidini sampeyan nemtokake mode akses menyang log kesalahan.

Source: opennet.ru

Add a comment