Lëshimi i gjuhës së programimit PHP 8.5

Pas një viti zhvillimi, është publikuar versioni i gjuhës së programimit PHP 8.5. Kjo degë e re përmban një sere mundësish të reja, si dhe disa ndryshime që shkelin pajtueshmërinë.

Ndryshimet kryesore në PHP 8.5 (1, 2, 3):

  • ËshtĂ« shtuar operatori «|>» (pipe), i cili lejon kalimin e vlerave nga njĂ« funksion nĂ« tjetrin pa pĂ«rdorimin e ndarjeve dhe variablave tĂ« ndĂ«rmjetĂ«m, duke pĂ«rdorur rezultatin e njĂ« funksioni si parametĂ«r nĂ« funksionin tjetĂ«r. NĂ«se funksioni ka njĂ« argument, parametrat pĂ«r kalim tĂ« vlerĂ«s zgjidhen me treguesin « », dhe nĂ«se funksioni ka disa argumente, zĂ«vendĂ«simi bĂ«het me mbyllje. PĂ«r shembull, kodi i mĂ«poshtĂ«m: $output = $input |> trim(
) |> fn (string $string) => str_replace(' ', '-', $string) |> fn (string $string) => str_replace(['.', '/', '
'], '', $string) |> strtolower(
); Ă«shtĂ« ekuivalent me: $temp = trim($input); $temp = str_replace(' ', '-', $temp); $temp = str_replace(['.', '/', '
'], '', $temp); $output = strtolower($temp); ose: $output = strtolower( str_replace(['.', '/', '
'], '', str_replace(' ', '-', trim($input)) ) );
  • ËshtĂ« ofruar mbĂ«shtetje pĂ«r caktimin e vlerave tĂ« reja pĂ«r objektet e klonuara gjatĂ« klonimit, pĂ«rmes kalimit nĂ« funksionin clone() tĂ« njĂ« vargu asociativ. public function withTitle(string $title): self { return clone($this, [ 'title' => $title, ]); }
  • ËshtĂ« shtuar atributi «#[NoDiscard]», i cili mund tĂ« pĂ«rdoret pĂ«r tĂ« dalĂ« me funksione, vlerat e kthimit tĂ« tĂ« cilave gjithmonĂ« duhet tĂ« pĂ«rdoren. NĂ«se vlera e kthyer nga njĂ« funksion i tillĂ« injorohet, interpretuese do tĂ« lĂ«shojĂ« njĂ« paralajmĂ«rim. PĂ«r tĂ« anashkaluar kontrollin, mund tĂ« pĂ«rdoret thirrja me konvertimin nĂ« tipin void. #[NoDiscard('duhet tĂ« pĂ«rdorni kĂ«tĂ« vlerĂ« kthimi.')] function foo(): string { return 'hi'; } foo(); // lĂ«shon paralajmĂ«rem (void) foo(); // Ok $string = foo(); // Ok
  • Lejohet pĂ«rdorimi i mbylljeve (closures) dhe objekteve tĂ« thirrjes sĂ« klasit tĂ« parĂ« (first-class callables) nĂ« shprehje konstante, ku mĂ« parĂ« ishte e lejueshme tĂ« specifikoheshin vlerat e pandryshueshme, tĂ« llogaritura gjatĂ« kompilimit. PĂ«r shembull, tani mund tĂ« specifikoni mbyllje nĂ« atributet, vlerat e paracaktuar dhe konstantat. Mbylljet e pĂ«rdorura nĂ« kĂ«tĂ« mĂ«nyrĂ« gjithmonĂ« duhet tĂ« shĂ«nohen me fjalĂ«n kyçe «static» dhe nuk mund tĂ« referohen nĂ« variablat e jashtme me shprehjen «use». #[SkipDiscovery(static function (Container $container): bool { return ! $container->get(Application::class) instanceof ConsoleApplication; })]
  • Kur ndodhin gabime fatale, tani teksti i mesazhit lidhet me njĂ« gjurmĂ« kthimi (backtrace) tĂ« thirrjeve.
  • JanĂ« shtuar funksionet array_first() dhe array_last(), qĂ« nxjerrin elementin e parĂ« dhe tĂ« fundit tĂ« vargut. PĂ«r shembull, nĂ« vend tĂ«: $first = $array[array_key_first($array)] ?? null; tani mund tĂ« shkruani: $first = array_first($array);
  • ËshtĂ« shtuar moduli URI, i cili ofron njĂ« API tĂ« thjeshtuar pĂ«r analizimin e lidhjeve. Analiza bĂ«het pĂ«rmes bibliotykave uriparser dhe lexbor. use Uri\Rfc3986\Uri; $uri = new Uri('https://opennet.me/64290'); $uri->getHost(); // opennet.me $uri->getScheme(); // https://
  • ËshtĂ« realizuar atributi «#[DelayedTargetValidation]», me tĂ« cilin mund tĂ« zhvendosni verifikimin e atributeve, si «#[Override]», nga faza e kompilimit nĂ« fazĂ«n ekzekutimit. #[DelayedTargetValidation] #[Override] public const NAME = 'Child';
  • JanĂ« shtuar funksionet get_error_handler() dhe get_exception_handler() pĂ«r tĂ« pĂ«rcaktuar funksionet me menaxherĂ«t e gabimeve dhe pĂ«rjashtimeve.
  • NĂ« modulin Curl Ă«shtĂ« implementuar funksioni curl_share_init_persistent(), i cili lejon ndarjen e deskriptorĂ«ve gjatĂ« trajtimit tĂ« kĂ«rkesave tĂ« ndryshme.
  • NĂ« modulin Exif Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r imazhet nĂ« formate HEIF dhe HEIC.
  • JanĂ« shpallur tĂ« vjetra: sintaksa jo standarde e konvertimit tĂ« emrave tĂ« tipeve (p.sh., '(integer)' nĂ« vend tĂ« '(int)'); pĂ«rdorimi i thonjĂ«zave tĂ« prapme (`) pĂ«r thirrjen e komandave nĂ« vend tĂ« shell_exec(); ri-deklarimi i konstantave; pĂ«rdorimi i pikĂ«s sĂ« ndĂ«rprerjes nĂ« vend tĂ« dy pikave pĂ«r pĂ«rfundimin e operatorĂ«ve case; specifikimi i null nĂ« vend tĂ« njĂ« string tĂ« zbrazĂ«t nĂ« vargje ose nĂ« funksionin array_key_exists(). Nga skedari ini Ă«shtĂ« fshirĂ« mbĂ«shtetja pĂ«r konfigurimin «disabled_classes».

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster