PÀrast aastast arendust on vÀlja antud PHP 8.5 programmeerimiskeele versioon. Uus haru sisaldab hulga uusi vÔimalusi ning mitmeid kokkusobivust rikkuvaid muudatusi.
Peamised muudatused PHP 8.5-s (1, 2, 3):
- Lisatud on â|>â (pipe) operaator, mis vĂ”imaldab edastada vÀÀrtusi ĂŒhest funktsioonist teise ilma vahepealsete mÀÀrangute ja muutujateta, kasutades ĂŒhe funktsiooni tĂ€itmise tulemust teise funktsiooni parameetrina. Kui funktsioonil on ĂŒks argument, valitakse vÀÀrtuse edastamise parameeter ââŠâ nĂ€itamise kaudu, ning kui funktsiooni on mitu argumenti, teostatakse asendamine sulgude abil. NĂ€iteks jĂ€rgmine kood $output = $input |> trim(âŠ) |> fn (string $string) => str_replace(' ', '-', $string) |> fn (string $string) => str_replace(['.', '/', 'âŠ'], '', $string) |> strtolower(âŠ); on ekvivalentne $temp = trim($input); $temp = str_replace(' ', '-', $temp); $temp = str_replace(['.', '/', 'âŠ'], '', $temp); $output = strtolower($temp); vĂ”i $output = strtolower( str_replace(['.', '/', 'âŠ'], '', str_replace(' ', '-', trim($input) ) ) );
- Kloonitud objektide uus vÀÀrtuste mÀÀramine on nĂŒĂŒd toetatud nende kloonimise kĂ€igus, edastades funktsiooni clone() kaudu assotsiatiivse massiivi. public function withTitle(string $title): self { return clone($this, [ 'title' => $title, ]); }
- Lisatud atribuut «#[NoDiscard]», mida saab kasutada funktsioonide mĂ€rgistamiseks, mille tagastatud vÀÀrtused peavad alati olema kasutatud. Kui sellise funktsiooni tagastatud vÀÀrtus ignoreeritakse, kuvab tĂ”lgendus hoiatuse. Kontrolli mööda minekuks saab kasutada kĂ”ne kombinatsiooniga tĂŒĂŒbiga void. #[NoDiscard('you must use this return value.')] function foo(): string { return 'hi'; } foo(); // kuvab hoiatuse (void) foo(); // Ok $string = foo(); // Ok
- Konstantsettes vĂ€ljendites on lubatud sulgemiste (closures) ja esmaklassiliste kutsumise objektide (first-class callables) kasutamine, kus varem oli lubatud ainult kompilatsiooni kĂ€igus arvutatud muutumatud vÀÀrtused. NĂ€iteks on nĂŒĂŒd vĂ”imalik sulgemisi mÀÀrata atribuutidesse, vaikimisi vÀÀrtustesse ja konstantidesse. Sellisel moel kasutatavad sulgemised peavad alati olema mĂ€rgitud mĂ€rksĂ”naga «static» ja nad ei tohi viidata vĂ€listele muutujatele vĂ€ljendi «use» abil. #[SkipDiscovery(static function (Container $container): bool { return ! $container->get(Application::class) instanceof ConsoleApplication; })]
- Kriitiliste vigade vĂ€ljundis on nĂŒĂŒd teate tekstile lisatud tagasikutsumise (backtrace) jĂ€lgimine.
- Lisatud funktsioonid array_first() ja array_last(), mis vĂ€ljendavad massiivi esimest ja viimast elementi. NĂ€iteks $first = $array[array_key_first($array)] ?? null; asemel vĂ”ib nĂŒĂŒd kirjutada $first = array_first($array);
- Lisatud URI moodul, mis pakub lihtsustatud API-d linkide analĂŒĂŒsimiseks. AnalĂŒĂŒs toimub uriparser ja lexbor teekide abil. use Uri\Rfc3986\Uri; $uri = new Uri(âhttps://opennet.me/64290â); $uri->getHost(); // opennet.me $uri->getScheme(); // https://
- Teostatud atribuut «#[DelayedTargetValidation]», mille abil saab viia atribuudi, nagu «#[Override]», kontrollimise kompileerimise etapilt tÀitmise etapile. #[DelayedTargetValidation] #[Override] public const NAME = 'Child';
- Lisatud funktsioonid get_error_handler() ja get_exception_handler() vigade ja erandite töötlemise funktsioonide mÀÀratlemiseks.
- Curl moodulis on rakendatud funktsioon curl_share_init_persistent(), mis vÔimaldab jagada deskriptore erinevate pÀringute töötlemisel.
- Exif mooduli on lisatud toe toimetamiseks HEIF ja HEIC formaadiga piltide jaoks.
- Mugavustest on vĂ€lja kuulutatud: mittestandardsed tĂŒĂŒbimuutuste sĂŒntaksi (nĂ€iteks «(integer)», mitte «(int)»); tagasihoidliku jutumĂ€rkide (`) kasutamine kĂ€skude kutsumiseks shell_exec'i asemel; pidev konstantide deklareerimine; punkte semikoolonina case operaatorite lĂ”petamiseks; nulli mÀÀramine tĂŒhjavahelemÀÀratlustes vĂ”i funktsioonis array_key_exists(). Ini-failist on eemaldatud âdisabled_classesâ seade toe.
Allikas: opennet.ru
