PHP 8.5 Programméiersprooch Verëffentlechung

No engem Joer Entwécklung ass PHP 8.5 erauskomm. De neie Branch enthält eng Rei nei Funktiounen, souwéi verschidde inkompatibel Ännerungen.

Schlësselännerungen an PHP 8.5 (1, 2, 3):

  • Den Pipe-Operator gouf bäigefüügt, deen et erlaabt, Wäerter vun enger Funktioun op eng aner weiderzeginn, ouni Zwëschenzouweisungen a Variablen ze benotzen, andeems d'Resultat vun enger Funktioun als Parameter an enger anerer benotzt gëtt. Wann d'Funktioun een Argument huet, gëtt de Parameter fir d'Iwwergab vum Wäert mat der "..." Klausel ausgewielt, a wann d'Funktioun méi Argumenter huet, gëtt d'Substitutioun mat Closures duerchgefouert. Zum Beispill, de folgende Code $output = $input |> trim(…) |> fn (string $string) => str_replace(' ', '-', $string) |> fn (string $string) => str_replace(['.', '/', '…'], », $string) |> strtolower(…); ass gläichwäerteg mat $temp = trim($input); $temp = str_replace(' ', '-', $temp); $temp = str_replace(['.', '/', '…'], », $temp); $output = strtolower($temp); oder $output = strtolower(str_replace(['.', '/', '…'], ", str_replace(' ', '-', trim($input))));
  • Et gëtt Ënnerstëtzung fir d'Zouweisung vun neie Wäerter un geklont Objeten beim Klonen, andeems en assoziativt Array un d'clone() Funktioun weiderginn gëtt. public function withTitle(string $title): self { return clone($this, [ 'title' => $title, ]); }
  • Den Attribut "#[NoDiscard]" gouf bäigefüügt, deen benotzt ka ginn, fir Funktiounen ze markéieren, deenen hir Retourwäerter ëmmer benotzt solle ginn. Wann de Retourwäert vun enger sou enger Funktioun ignoréiert gëtt, dréckt den Interpreter eng Warnung. Fir d'Kontroll ze ëmgoen, kënnt Dir en Opruff mat engem Cast op Void benotzen. #[NoDiscard("Dir musst dëse Retourwäert benotzen.")] ​​function foo(): string { return 'hi'; } foo(); // eng Warnung drécken (void) foo(); // Ok $string = foo(); // Ok
  • Closures an Éischt-Klass-Uruffbarer kënnen elo a konstante Ausdréck benotzt ginn, déi virdru onverännerlech Wäerter beim Kompiléiere erlaabt hunn. Zum Beispill kënnen Closures elo an Attributer, Standardwäerter a Konstanten spezifizéiert ginn. Closures, déi op dës Manéier benotzt ginn, mussen ëmmer mam Schlësselwuert static markéiert sinn a kënnen net op äusser Variablen iwwer d'use-Klausel zougräifen. #[SkipDiscovery(static function (Container $container): bool { return ! $container->get(Application::class) instanceof ConsoleApplication; })]
  • Wann fatal Feeler ausgegeben ginn, gëtt elo e Call-Backtrace un den Messagetext ugehaangen.
  • D'Funktiounen array_first() an array_last() goufen derbäigesat, déi dat éischt an dat lescht Element vun engem Array uweisen. Zum Beispill, amplaz vun $first = $array[array_key_first($array)] ?? null; kënnt Dir elo $first = array_first($array) schreiwen;
  • E URI-Modul gouf bäigefüügt, deen eng vereinfacht API fir d'Parsing vu Linken ubitt. D'Parsing gëtt mat de Bibliothéiken uriparser a lexbor duerchgefouert. use Uri\Rfc3986\Uri; $uri = new Uri('https://opennet.me')/64290'); $uri->getHost(); // opennet.me $uri->getScheme(); // https://
  • Den Attribut "#[DelayedTargetValidation]" gouf implementéiert, wat et erlaabt, d'Validatioun vun Attributer wéi "#[Override]" vun der Kompilatiounszäit op d'Lafzäit ze verleeën. #[DelayedTargetValidation] #[Override] public const NAME = 'Child';
  • D'Funktiounen get_error_handler() an get_exception_handler() goufen derbäigesat fir Funktiounen mat Fehler- an Ausnamhandler ze definéieren.
  • De Curl-Modul implementéiert d'Funktioun curl_share_init_persistent(), déi et Iech erlaabt, Handles ze deelen, wann Dir verschidden Ufroen veraarbecht.
  • Den Exif-Modul ënnerstëtzt elo Biller am HEIF- an HEIC-Format.
  • Ofgeschwächt: Net-Standard-Typ-Nimm-Casting-Syntax (z.B. "(integer)" amplaz vun "(int)"); Benotzung vu Backticks (`) fir Befeeler amplaz vu shell_exec() opzeruffen; widderholl Konstantendeklaratiounen; Benotzung vu Semikolonen amplaz vun Duebelpunkten fir Case-Aussoen ze beenden; Spezifizéierung vun null amplaz vun engem eidele String an Arrays oder an der array_key_exists() Funktioun. D'Ënnerstëtzung fir d'Astellung "disabled_classes" gouf aus der ini-Datei ewechgeholl.

Source: opennet.ru

Setzt e Commentaire