PHP 8.4 forritunarmálsútgáfa

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

Helstu breytingar á PHP 8.4:

  • Ný útfærsla á JIT þýðandanum, byggð á grunni IR ramma, er lögð til. Lykilmunurinn er sá að gamla JIT myndaði beint vélaleiðbeiningar byggðar á bækikóða og með því að nota mismunandi bakenda fyrir x86_64 og AArch64 arkitektúrana, á meðan nýja JIT notar einn bakenda fyrir alla arkitektúra og býr til milliframsetningu (IR), sem er síðan lengra fínstillt og breytt í vélaleiðbeiningar fyrir viðkomandi markvettvang.
  • Bætti við stuðningi við að tengja eignakróka, sem gerir þér kleift að bæta við viðbótarrökfræði sem er keyrð þegar þú breytir eða opnar eiginleika hlutar, útfærð án þess að stöðva lestrar- og skrifaðgerðir með því að nota algengu aðgerðir __get og __set, og án þess að búa til viðbótar bindingaraðferðir. Notkun eignaumsjónarmanna gerir það mögulegt að draga verulega úr kóðamagni og einfalda endurskilgreiningu á hegðun við að vinna með eignir, þökk sé bindingu eigin meðhöndlunar við hverja eign. class User { public string $name { set { if (strlen($value) === 0) { throw new ValueError("Nafn verður að vera ekki tómt"); } $this->name = $gildi; } } public fall __construct(strengur $nafn) { $this->name = $nafn; } }
  • Heimilt er að tilgreina tilvísanir í aðferðir í „nýju“ smíði án þess að aðgreina sviga, þ.e. í stað „$name = (new MyClass())->method()“ geturðu nú tilgreint „$name = new MyClass()->method()“.
  • Bætti við hæfileikanum til að stjórna ósamhverfum sýnileika hlutareiginleika (opinber, einka, vernduð), sérstaklega fyrir skrifa (setja) og lesa (fá) aðgerðir. Til dæmis: class PhpVersion { public private(set) string $version = '8.4'; } $phpVersion = ný PhpVersion(); var_dump($phpVersion->útgáfa); // string(3) "8.4" $phpVersion->version = 'PHP 8.3'; // villa
  • Veitt staðlaðan stuðning fyrir „lata“ hluti, sem eru frumstilltir við fyrstu notkun.
  • Í stað almennu færibreytunnar „opcache.jit_buffer_size“ eru færibreyturnar „opcache.jit“ og „opcache.jit_buffer_size“ lagðar til til að stjórna JIT þýðandanum og stilla JIT biðminni stærð. Til að slökkva á JIT geturðu nú tilgreint „opcache.jit=disable“ í stað „opcache.jit_buffer_size=0“. Breytingar hafa verið gerðar til að draga úr minnisnotkun og bæta JIT árangur í sumum aðstæðum.
  • Bætti við eigindinni „#[\Umgengin]“ til að merkja úreltar aðgerðir, flokka og aðferðir. #[\Deprecated("notaðu newFunction() í staðinn", þar sem: "1.1")] fall oldFunction() { // ... }
  • \Dom\HTMLDocument flokkurinn hefur verið innleiddur, sem styður rétta þáttun HTML5 merkingar.
  • Bætti við request_parse_body() aðgerðinni til að flokka HTTP beiðnir með innihaldsgerð margliða/formsgagna (RFC1867).
  • Bætt við aðgerðum array_find(), array_find_key(), array_any() og array_all(). Aðgerðirnar array_find() og array_find_key() skila fyrsta þættinum eða lyklinum í fylkinu sem ávísunin sem tilgreind var í gegnum notendatilgreinda afturhringingaraðgerðina virkaði fyrir. Aðgerðirnar array_any() og array_all() skila aftur á móti öllum samsvarandi þáttum og öllum samsvarandi þáttum. Til dæmis, til að sýna fyrsta þáttinn þar sem titilreiturinn er stærri en 5 stafir, geturðu tilgreint: $firstMatch = array_find( $posts, function (Post $post) { return strlen($post->title) > 5; } ) ;
  • Bætt við DateTime::getMicrosecond() og DateTimeImmutable::setMicrosecond($microsecond) aðferðum til að fá og stilla tíma með míkrósekúndu nákvæmni, sem og DateTime::createFromTimestamp() aðferð.
  • PDO (PHP Data Objects), óhlutbundið viðmót til að vinna með gagnagrunna, hefur bætt við getu til að búa til SQL flokka og undirflokka sem eru sérstakir fyrir ákveðna DBMS rekla. Nýjum undirflokkum Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc og Pdo\Sqlite hefur verið bætt við.
  • Bætt við nýjum aðgerðum mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst(), bcceil(), bcdivmod(), bcfloor() og bcround(), pcntl_getcpu(), pcntl_getcpuaffinity(), pcosntl_getq , pcntl_setns(), pcntl_waitid(), http_get_last_response_headers(), http_clear_last_response_headers(), fpow()
  • Nú er hægt að kalla út- og deyjaaðgerðirnar sem fullgildar aðgerðir sem hægt er að senda sem rök fyrir aðrar aðgerðir. Áður fyrr var virkni exit() og die() aðgerðanna mjög takmörkuð, þar sem þær voru umbúðir yfir exit og die lykilorðin.
  • Breytingum hefur verið bætt við til að gera það erfiðara að nýta sér veikleika í biðminni umframkeyrslu, sem og til að auka slembival á skráarnöfnum sem eru búin til með tempnam() aðgerðinni.
  • Afturkallaði hegðun þar sem aðgerðabreytum með sjálfgefið gildi núll var sjálfkrafa leyft að úthluta núllgildum. Til þess að slíkar færibreytur geti samþykkt núllgildi, þarf nú að gefa skýra vísbendingu um forskeytið "?". Til dæmis, í stað „function save(Book $book = null) {}“ ættirðu að tilgreina „function save(?Book $book = null) {}“.
  • Fastarnir E_STRICT, MYSQLI_REFRESH_*, föllin mysqli_ping(), mysqli_kill(), mysqli_refresh(), aðferðirnar mysqli::ping(), mysqli::kill(), mysqli::refresh(), hæfileikinn til að nota „_ ” sem flokksheiti, sumir DOMDocument og DOMentity eiginleikar. Það er bönnuð að endurskilgreina GMP flokksfasta, sem „loka“ lykilorðið er nú stillt fyrir.

Að auki getum við tekið eftir útgáfu kyrrstöðugreiningartækisins PHPStan 2.0, sem gerir þér kleift að finna villur í PHP kóða án þess að keyra hann og nota einingapróf. Greiningartækið býður upp á 10 stig, sem nær yfir svæði eins og að bera kennsl á óskilgreindar breytur, óþekkta flokka, aðgerðir og aðferðir; athuga gerðir af rökum og skilagildum; rétt notkun sumra gerða; Skilgreining á aldrei kallaður kóða. Verkefniskóðinn er skrifaður í PHP og dreift undir MIT leyfinu.

Heimild: opennet.ru

Bæta við athugasemd