PHP 8.2 release basa programming

Sanggeus sataun pangwangunan, sékrési basa programming PHP 8.2 dibere. Cabang anyar ngawengku runtuyan fitur anyar, kitu ogé sababaraha parobahan nu megatkeun kasaluyuan.

Perbaikan konci dina PHP 8.2:

  • Ditambahkeun kamampuan pikeun nyirian kelas salaku ngan ukur dibaca. Pasipatan dina kelas sapertos tiasa disetél ngan sakali, saatos éta henteu sayogi pikeun robih. Saméméhna, sipat kelas individu bisa ditandaan baca-hijina, tapi ayeuna anjeun bisa ngaktipkeun mode ieu pikeun sakabéh sipat kelas sakaligus. Nangtukeun bendera "baca wungkul" di tingkat kelas ogé meungpeuk tambahan dinamis sipat ka kelas. readonly kelas Post {fungsi publik __construct (string publik $ judul, Public Author $ pangarang,) {}} $ pos = Post anyar (/* ... */); $post->unknown = 'salah'; // Kasalahan: Teu bisa nyieun sipat dinamis Post:: $ kanyahoan
  • Ditambahkeun tipe misah "leres", "palsu" jeung "null", nu bisa nyandak ngan hiji nilai valid tur dipaké, Contona, pikeun balik hiji fungsi kalawan bandéra terminasi kasalahan atawa hiji nilai kosong. Saméméhna, "leres", "palsu" jeung "null" ngan bisa dipaké ditéang jeung tipe séjén (contona, "string | palsu"), tapi ayeuna maranéhna bisa dipaké misah: fungsi alwaysFalse (): false {balik palsu ; }
  • Disadiakeun kamampuhan pikeun nyaring setelan sénsitip dina kaluaran renik tumpukan dina waktu kasalahan. Motong kaluar inpo nu tangtu bisa jadi diperlukeun nalika informasi ngeunaan kasalahan anu lumangsung otomatis dikirim ka ladenan pihak katilu nu ngalacak masalah jeung ngawartosan pamekar ngeunaan eta. Contona, anjeun tiasa ngaluarkeun parameter tina renik anu kalebet nami pangguna, kecap akses, sareng variabel lingkungan. test fungsi ($ foo, #[\SensitiveParameter] $sandi, $baz) {ngalungkeun Exception anyar ('Error'); } test ( 'foo', 'sandi', 'baz'); Kasalahan fatal: Uncaught Exception: Kasalahan dina test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {utama} dialungkeun dina test.php on line 8
  • Diwenangkeun pikeun nangtukeun konstanta dina Tret (Tret, mékanisme pikeun reusing kode). Konstanta didefinisikeun dina tret bisa diakses ngaliwatan kelas nu ngagunakeun tret (tapi teu ngaliwatan ngaran tret). trait Foo {const publik CONSTANT = 1; bar fungsi publik (): int {balik diri:: CONSTANT; // Kasalahan fatal }} kelas Bar {make Foo; } var_dump(Bar:: CONSTANT); // 1
  • Ditambahkeun kamampuan pikeun nangtukeun jinis dina bentuk normal disjunctive (DNF, Bentuk Normal Disjunctive), anu ngamungkinkeun anjeun ngagabungkeun gabungan jinis (kumpulan dua atanapi langkung jinis) sareng persimpangan jinis (jenis anu nilaina aya dina sababaraha). tipe sakaligus). kelas Foo {bar fungsi umum ((A & B)|null $ éntitas) {lamun ($ éntitas === null) {balik null; } balik $ éntitas; }}
  • A extension anyar "Acak" geus diusulkeun kalawan fungsi jeung kelas pikeun generating angka pseudo-acak jeung runtuyan. modul nyadiakeun antarbeungeut obyék-berorientasi, ngidinan Anjeun pikeun milih mesin béda pikeun generating angka pseudo-acak, kaasup nu cocog pikeun pamakéan dina kriptografi, sarta nyadiakeun fungsi bantu, Contona, pikeun acak Pergaulan arrays na string, milih konci Asép Sunandar Sunarya acak, pamakéan simultaneous sababaraha Generators kalawan kaayaan bebas sorangan. $rng = $is_production ? Acak anyar \ Mesin \ Aman (): Acak anyar \ Mesin \ Mt19937 (1234); $randomizer = new Random\Randomizer($rng); $randomizer->shuffleString( 'foobar');
  • Konversi kasus lokal-bebas dilaksanakeun. Fungsi kawas strtolower () jeung strtoupper () ayeuna salawasna ngarobah kasus karakter dina rentang ASCII, sakumaha nalika netepkeun Lokalisasi ka "C".
  • Ditambahkeun 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.
  • Ditambahkeun métode anyar: mysqli :: execute_query, ZipArchive :: getStreamIndex, ZipArchive :: getStreamName, ZipArchive :: clearError, ReflectionFunction :: isAnonymous, ReflectionMethod :: hasPrototype.
  • Kamampuhan pikeun nyiptakeun sipat sacara dinamis di kelas parantos dileungitkeun. Dina PHP 9.0, ngaksés sipat anu henteu didefinisikeun mimitina di kelas bakal nyababkeun kasalahan (ErrorException). Kelas nu nyadiakeun __get na __set métode pikeun nyieun sipat, atawa sipat dinamis dina stdClass, bakal neruskeun dianggo tanpa parobahan, ngan karya implisit jeung sipat non-existent bakal dirojong ngajaga pamekar ti bug disumputkeun. Pikeun ngawétkeun karya kode heubeul, atribut "#[AllowDynamicProperties]" diusulkeun, ngamungkinkeun pamakéan sipat dinamis.
  • Kamampuhan pikeun ngagentos nilai-nilai variabel kana senar nganggo ekspresi "${var}" sareng ${(var)}" parantos dileungitkeun. Rojongan pikeun substitusi "{$var}" sareng "$var" anu biasa dianggo parantos dipikagaduh. Contona: "Halo {$dunya}"; OK "Halo $ dunya"; OK "Halo ${world}"; Deprecated: Ngagunakeun ${} dina string geus deprecated
  • Callables anu dirojong sawaréh dirojong anu tiasa disebat ngalangkungan "call_user_func ($ callable)", tapi henteu ngadukung nelepon dina bentuk "$ callable ()": "self:: method" "parent:: method" "static:: method" ["self", "metode"] ["parent", "metode"] ["static", "metode""] "Bar:"
  • Diréktif error_log_mode geus ditambahkeun kana setélan, sahingga anjeun bisa nangtukeun mode aksés ka log kasalahan.

sumber: opennet.ru

Tambahkeun komentar