Rilis basa pemrograman PHP 8.3

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

Owah-owahan utama ing PHP 8.3:

  • Sajrone kloning kelas, sampeyan bisa miwiti maneh properti kanthi atribut "mung diwaca". Overriding sifat readonly mung diijini nang "__clone" fungsi: readonly kelas Post {fungsi umum __construct (public DateTime $createdAt,) {} public function __clone() {$this->createdAt = new DateTime(); // diijini sanajan properti "createdAt" mung diwaca. }}
  • Kemampuan kanggo nggunakake konstanta kanthi indikasi jinis ing kelas, sipat lan enumerasi wis diwenehake: kelas Foo {const string BAR = 'baz'; }
  • Dhukungan sing ditambahake kanggo atribut "#[Override]", sing pangembang bisa menehi informasi marang interpreter yen metode sing ditandhani ngatasi sawetara metode induk. Yen ora ana override, juru basa bakal nampilake kesalahan.
  • Ngganti nangani nilai negatif minangka indeks larik. Contone, nalika nambah unsur kanthi nomer "-5" menyang larik kosong lan nambah unsur liyane, sadurunge unsur kapindho disimpen kanthi indeks "0", nanging wiwit versi PHP 8.3 bakal disimpen kanthi indeks "-4". . $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // Was array (-5 => 'a', 0 => 'b') // Dadi array (-5 => 'a', -4 => 'b')
  • Nambahake kemampuan kanggo nggawe kelas anonim ing mode mung diwaca: $class = kelas readonly anyar { public function __construct ( public string $ foo = 'bar', ) {}};
  • Nambahake fungsi json_validate () kanggo mriksa kanthi cepet yen senar ana ing format JSON tanpa nindakake operasi dekoding. json_validate(string $json, int $depth = 512, int $flags = 0): bool
  • Cara anyar wis ditambahake ing kelas Randomizer, sing nyedhiyakake API tingkat dhuwur kanggo ngasilake nomer lan urutan pseudo-acak: getBytesFromString kanggo ngasilake senar saka ukuran tartamtu, nggunakake kanthi acak karakter sing ana ing senar liyane; getFloat lan nextFloat kanggo ngasilake nomer floating point acak sing ana ing sawetara sing ditemtokake.
  • Ditambahake kemampuan kanggo njupuk konstanta nggunakake sintaks kelas dinamis: kelas Foo {const BAR = 'bar'; } $jeneng = 'BAR'; // Sadurunge, kanggo njupuk BAR pancet, sampeyan kudu nelpon pancet (Foo:: kelas. '::' . $ jeneng); // Saiki mung nemtokake Foo::{$name};
  • Nambahake generasi pengecualian individu (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) yen ana masalah ing operasi sing nggarap tanggal lan wektu.
  • Ngapikake penanganan kesalahan sing kedadeyan sajrone parsing data serial ing fungsi unserialize (). Yen ana masalah, unserialize () saiki ngetokake E_WARNING tinimbang E_NOTICE.
  • Owah-owahan wis digawe kanggo sawetara () fungsi. Pangecualian diasilake nalika nyoba ngliwati obyek, sumber daya utawa susunan ing variabel sing nemtokake wates jangkoan, uga nalika nemtokake nilai negatif ing parameter $step utawa nilai sing ora ditemtokake ing parameter apa wae. Dhaptar karakter saiki bisa dadi output nalika nemtokake string tinimbang nomer (contone, "rentang ('5', 'z')").
  • Ngganti prilaku sipat kanthi sifat statis, sing saiki ngganti sifat statis sing diwarisake saka kelas induk.
  • Setelan sing ditambahake kanggo proteksi kebanjiran tumpukan. Direktif zend.max_allowed_stack_size lan zend.reserved_stack_size wis ditambahake menyang file ini, nemtokake ukuran tumpukan maksimum sing diidini lan dilindhungi undhang-undhang. Program bakal nabrak nalika nyedhak kesel tumpukan, nalika tumpukan kebak luwih saka prabΓ©dan antarane zend.max_allowed_stack_size lan zend.reserved_stack_size (eksekusi bakal mandheg sadurunge fault segmentation occurs). Kanthi gawan, zend.max_allowed_stack_size Nilai disetel kanggo 0 (0-ukuran ditemtokake kanthi otomatis; kanggo mateni watesan, sampeyan bisa nyetel -1).
  • Ditambahake fungsi POSIX anyar posix_sysconf (), posix_pathconf (), posix_fpathconf () lan posix_eaccess ().
  • Fungsi mb_str_pad wis ditambahake, yaiku analog saka fungsi string str_pad (), dirancang kanggo nggarap enkoding multi-byte kayata UTF-8.
  • Ngidini sampeyan nggawe penutupan saka metode lan menehi argumen sing dijenengi menyang penutupan kasebut. $test = new Test(); $closure = $test->magic(…); $closure(a: 'halo', b: 'donya');
  • Prilaku sing diganti nalika nangani visibilitas konstanta ing antarmuka. antarmuka I {const umum FOO = 'foo'; } kelas C ngleksanakake I {pribadi const FOO = 'foo'; }
  • Kapabilitas array_sum (), array_product (), posix_getrlimit (), gc_status (), class_alias (), mysqli_poll (), array_pad () lan proc_get_status () wis ditambahi.
  • Kemampuan kanggo ngliwati nilai $ widths negatif kanggo mb_strimwidth () wis ora digunakake. Konstanta NumberFormatter::TYPE_CURRENCY wis dibusak. Dhukungan kanggo nelpon fungsi ldap_connect () karo loro paramΓ¨ter $ inang lan $ port wis mandhek. Setelan opcache.consistency_checks wis dibusak.

Source: opennet.ru

Add a comment