PHP 8.3 forritunarmálsútgáfa

Eftir eins árs þróun var útgáfa PHP 8.3 forritunarmálsins kynnt. Nýja útibúið inniheldur röð nýrra eiginleika, auk nokkurra breytinga sem brjóta eindrægni.

Helstu breytingar á PHP 8.3:

  • Meðan á klónun bekkjar stendur er hægt að endurræsa eiginleika með „readonly“ eigindinni. Að hnekkja skrifvarandi eiginleikum er aðeins leyfð innan „__clone“ fallsins: readonly class Post { public function __construct( public DateTime $createdAt, ) {} public fall __clone() { $this->createdAt = new DateTime(); // leyft þó að "createdAt" eignin sé skrifvarinn. } }
  • Möguleikinn á að nota fasta með tegundavísun í flokkum, eiginleikum og upptalningum hefur verið veitt: class Foo { const string BAR = 'baz'; }
  • Bætti við stuðningi við „#[Hanka]“ eigindina, sem verktaki getur upplýst túlkinn um að merkta aðferðin hnekkir einhverri yfiraðferð. Ef ekki er hnekkt mun túlkurinn sýna villu.
  • Breytt meðhöndlun neikvæðra gilda sem fylkisvísitölu. Til dæmis, þegar einingu með númerinu „-5“ er bætt við tómt fylki og öðru staki bætt við, var seinni þátturinn áður vistaður með vísitölunni „0“, en frá og með útgáfu PHP 8.3 verður hann vistaður með vísitölunni „-4“ . $fylki = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // Var fylki (-5 => 'a', 0 => 'b') // Varð fylki (-5 => 'a', -4 => 'b')
  • Bætti við möguleikanum á að búa til nafnlausa flokka í skrifvarinn hátt: $class = new readonly class { public function __construct( public string $foo = 'bar', ) {} };
  • Bætti við json_validate() aðgerðinni til að athuga fljótt hvort strengur sé á JSON sniði án þess að framkvæma afkóðun. json_validate(strengur $json, int $dýpt = 512, int $flags = 0): bool
  • Nýjum aðferðum hefur verið bætt við Randomizer flokkinn, sem veitir há-stigi API til að búa til gervi-handahófskenndar tölur og raðir: getBytesFromString til að búa til streng af tiltekinni stærð, með því að nota í handahófskenndri röð stafi sem eru til staðar í öðrum streng; getFloat og nextFloat til að búa til handahófskennda flottölu sem fellur innan tilgreinds bils.
  • Bætti við hæfileikanum til að sækja fasta með því að nota kraftmikla flokkasetningafræði: class Foo { const BAR = 'bar'; } $name = 'BAR'; // Áður, til að sækja BAR fastann, þurftir þú að kalla fastan(Foo::class . '::' . $name); // Tilgreindu nú bara Foo::{$name};
  • Bætt við kynslóð einstakra undantekninga (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) ef vandamál koma upp í aðgerðum sem vinna með dagsetningar og tíma.
  • Bætt meðhöndlun villna sem eiga sér stað við þáttun raðbundinna gagna í unserialize() fallinu. Ef upp koma vandamál, gefur unserialize() nú út E_WARNING í stað E_NOTICE.
  • Breytingar hafa verið gerðar á range() fallinu. Undantekning myndast þegar reynt er að senda hluti, auðlindir eða fylki í breytum sem skilgreina sviðsmörk, sem og þegar tilgreint er neikvætt gildi í $step færibreytunni eða óskilgreint gildi í hvaða færibreytu sem er. Nú er hægt að gefa út lista yfir stafi þegar strengir eru tilgreindir í stað tölur (til dæmis „svið('5', 'z')").
  • Breytti hegðun eiginleika með kyrrstöðueiginleika, sem hnekkja nú kyrrstöðueiginleikum sem erfðir eru frá móðurflokknum.
  • Bætt við stillingum fyrir stafla yfirflæðisvörn. Tilskipunum zend.max_allowed_stack_size og zend.reserved_stack_size hefur verið bætt við ini skrána, sem skilgreinir hámarks leyfilega og frátekna staflastærð. Forritið mun hrun þegar nálgast stafla klárast, þegar staflan er fullur meira en munurinn á milli zend.max_allowed_stack_size og zend.reserved_stack_size (framkvæmd stöðvast áður en skiptingarvilla kemur upp). Sjálfgefið er að gildið zend.max_allowed_stack_size er stillt á 0 (0—stærðin er ákvörðuð sjálfkrafa; til að slökkva á takmörkuninni geturðu stillt hana á -1).
  • Bætti við nýjum POSIX aðgerðum posix_sysconf(), posix_pathconf(), posix_fpathconf() og posix_eaccess().
  • mb_str_pad fallinu hefur verið bætt við, sem er hliðstæða str_pad() strengjafallsins, sem er hönnuð til að vinna með margra bæta kóðun eins og UTF-8.
  • Gerir þér kleift að búa til lokanir úr aðferðum og senda nefnd rök til þeirra lokana. $test = nýtt próf(); $lokun = $test->galdur(…); $closure(a: 'halló', b: 'heimur');
  • Breytt hegðun við meðhöndlun á sýnileika fasta í viðmótum. tengi I { public const FOO = 'foo'; } flokkur C útfærir I { private const FOO = 'foo'; }
  • Möguleikar array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() og proc_get_status() aðgerðir hafa verið auknar.
  • Hæfni til að senda neikvætt $widths gildi til mb_strimwidth() hefur verið úrelt. NumberFormatter::TYPE_CURRENCY fastinn hefur verið fjarlægður. Stuðningur við að kalla ldap_connect() aðgerðina með tveimur breytum $host og $port hefur verið hætt. Opcache.consistency_checks stillingin hefur verið fjarlægð.

Heimild: opennet.ru

Bæta við athugasemd