PHP 8.3 Programméiersprooch Verëffentlechung

No engem Joer vun der Entwécklung gouf d'Verëffentlechung vun der PHP 8.3 Programméiersprooch presentéiert. Déi nei Branche enthält eng Serie vun neie Fonctiounen, souwéi e puer Ännerungen déi d'Kompatibilitéit briechen.

Schlëssel Ännerungen am PHP 8.3:

  • Wärend Klasseklonen ass et méiglech Eegeschafte mat dem "readonly" Attribut nei ze initialiséieren. Iwwerdribblen nëmme liest Eegeschafte ass nëmmen an der "__clone" Funktioun erlaabt: readonly Klass Post { ëffentlech Funktioun __construct (ëffentlech DateTime $createdAt, ) {} ëffentlech Funktioun __clone () { $this->createdAt = new DateTime (); // erlaabt och wann d'Eegeschaft "createdAt" nëmme liesen ass. } }
  • D'Kapazitéit fir Konstanten mat Typindikatioun a Klassen, Charakteren an Opzielungen ze benotzen gouf zur Verfügung gestallt: Klass Foo { const string BAR = 'baz'; }
  • Zousätzlech Ënnerstëtzung fir den "#[Override]" Attribut, mat deem den Entwéckler den Dolmetscher informéiere kann datt déi markéiert Method eng Elterenmethod iwwerschreift. Wann et keng Iwwerschrëft gëtt, weist den Dolmetscher e Feeler.
  • Geännert Handhabung vun negativen Wäerter als Arrayindex. Zum Beispill, wann Dir en Element mat der Nummer "-5" op eng eidel Array bäidréit an en anert Element bäidréit, gouf virdru dat zweet Element mam Index "0" gespäichert, awer ab Versioun PHP 8.3 gëtt et mam Index "-4" gespäichert. . $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // War Array (-5 => 'a', 0 => 'b') // Array ginn (-5 => 'a', -4 => 'b')
  • D'Fähigkeit bäigefüügt fir anonym Klassen am Read-only Modus ze kreéieren: $class = new readonly class { public function __construct( public string $foo = 'bar', ) {} };
  • Json_validate () Funktioun bäigefüügt fir séier ze kontrolléieren ob eng String am JSON-Format ass ouni Dekodéierungsoperatiounen auszeféieren. json_validate(string $json, int $depth = 512, int $flags = 0): bool
  • Nei Methoden goufen zu der Randomizer Klass dobäi, déi eng héich-Niveau API fir generéieren pseudo-zoufälleg Zuelen a Sequenzen gëtt: getBytesFromString fir Generéiere vun engem String vun enger bestëmmter Gréisst, benotzt an zoufälleg Uerdnung d'Charaktere presentéieren an enger anerer String; getFloat an nextFloat fir eng zoufälleg Floating Point Zuel ze generéieren déi am spezifizéierte Beräich fällt.
  • D'Fähigkeit bäigefüügt fir Konstanten mat der dynamescher Klass Syntax ze recuperéieren: Klass Foo { const BAR = 'Bar'; } $name = 'BAR'; // Virdrun, fir d'BAR Konstant ze recuperéieren, musst Dir konstant ruffen (Foo::class . '::' . $name); // Elo gitt just Foo :: {$name};
  • Zousätzlech Generatioun vun eenzel Ausnahmen (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) am Fall vu Probleemer, déi an Operatiounen entstinn, déi mat Datumen an Zäit schaffen.
  • Verbessert Ëmgank mat Feeler, déi während Parsing vun serialiséiert Donnéeën an der unserialize () Funktioun geschéien. Am Fall vu Problemer, unserialize () elo erausginn E_WARNING amplaz E_NOTICE.
  • Ännerungen goufen an der Range () Funktioun gemaach. Eng Ausnam gëtt generéiert wann Dir probéiert Objeten, Ressourcen oder Arrays a Variablen ze passéieren, déi Grenzgrenzen definéieren, wéi och wann Dir en negativen Wäert am $ Schrëtt Parameter oder en ondefinéierte Wäert an all Parameter spezifizéiert. Eng Lëscht vun Zeechen kann elo erausginn wann Dir Strings anstatt Zuelen spezifizéiert (zum Beispill "range('5', 'z')").
  • Verännert d'Behuele vun Eegeschafte mat statesche Eegeschaften, déi elo statesch Eegeschafte ierflecher vun der Elterenklass iwwerschreiden.
  • Zousätzlech Astellunge fir Stack Iwwerschwemmungsschutz. D'zend.max_allowed_stack_size an zend.reserved_stack_size Direktiven goufen an d'Ini Datei bäigefüügt, déi maximal erlaabt a reservéiert Stackgréisst definéiert. De Programm wäert Crash wann Stack Ausschöpfung Approche, wann de Stack méi voll ass wéi den Ënnerscheed tëscht zend.max_allowed_stack_size an zend.reserved_stack_size (Ausféierung wäert ophalen ier e Segmentatiounsfehler geschitt). Par défaut gëtt de zend.max_allowed_stack_size Wäert op 0 gesat (0 - d'Gréisst gëtt automatesch festgeluecht; fir d'Limitatioun auszeschalten, kënnt Dir et op -1 setzen).
  • Nei POSIX Funktiounen dobäigesat posix_sysconf (), posix_pathconf (), posix_fpathconf () an posix_eaccess ().
  • D'mb_str_pad Funktioun gouf bäigefüügt, wat en Analog vun der Str_pad () String Funktioun ass, entwéckelt fir mat Multi-Byte Kodéierungen wéi UTF-8 ze schaffen.
  • Erlaabt Iech Zoumaache vu Methoden ze kreéieren an genannt Argumenter un dës Zoumaache weiderzeginn. $test = neien Test(); $closure = $test->magic(...); $closure(a: 'Moien', b: 'Welt');
  • Geännert Verhalen beim Ëmgank mat der Visibilitéit vu Konstanten an Interfaces. Interface I { public const FOO = 'foo'; } Klass C implementéiert I { private const FOO = 'foo'; }
  • D'Kapazitéite vun der array_sum (), array_product (), posix_getrlimit (), gc_status (), class_alias (), mysqli_poll (), array_pad () an proc_get_status () Funktiounen goufen erweidert.
  • D'Kapazitéit fir en negativen $widths Wäert op mb_strimwidth () ze passéieren ass ofgeschaaft ginn. D'ZuelFormatter :: TYPE_CURRENCY Konstante gouf geläscht. Ënnerstëtzung fir d'Funktioun ldap_connect () ze ruffen mat zwee Parameteren $host an $port gouf gestoppt. D'opcache.consistency_checks Astellung gouf geläscht.

Source: opennet.ru

Setzt e Commentaire