Famoahana ny fiteny fandaharana PHP 8.1

Taorian'ny taonan'ny fampandrosoana dia naseho ny famoahana ny fiteny fandaharana PHP 8.1. Ny sampana vaovao dia ahitana andiana endri-javatra vaovao, ary koa fiovana maromaro izay manapaka ny fifanarahana.

Fanatsarana lehibe amin'ny PHP 8.1:

  • Fanampiana fanampiny ho an'ny fanisana, ohatra, azonao ampiasaina izao fananganana manaraka izao: enum Status { tranga miandry; case Active; case Archived; } class Post { public function __construct( private Status $status = Status :: Pending; ) {} public function setStatus(Status $status): void { // … } } $post->setStatus(Status:: Active);
  • Fanampiana fanampiny ho an'ny kofehy maivana antsoina hoe Fibers, izay ahafahanao mitantana kofehy famonoana amin'ny ambaratonga ambany. Ny fanohanana fibre dia nokasaina hampidirina ao amin'ny rafitra Amphp sy ReactPHP. $fiber = new Fibre(function (): void {$valueAfterResuming = Fibre::suspend('aorian'ny fampiatoana'); // ... }); $valueAfterSuspending = $fiber->manomboka(); $fiber->resume('aorian'ny famerenana');
  • Nohatsaraina ny fampiharana ny cache code object (opcache), ka ahafahana mitahiry vaovao momba ny lova kilasy. Ny Optimization dia nahafahana nampitombo ny fahombiazan'ny fampiharana sasany amin'ny 5-8%. Ny fanatsarana hafa dia ny fanatsarana ny fiasan'ny JIT, ny fampiharana ny fanohanan'ny JIT ho an'ny maritrano ARM64 (AArch64), ny fanafainganana ny famahana ny anarana, ny fanatsarana ny tranomboky timelib sy ny ext/date, ny fitomboan'ny serialization sy ny deserialization, ny fanatsarana ny get_declared_classes (), mipoaka () , strtr() function, strnatcmp(), dechex(). Amin'ny ankapobeny dia misy 23.0% ny fitomboan'ny fampisehoana ho an'ny Symfony Demo, ary 3.5% ho an'ny WordPress.
  • Ny opΓ©rateur de unpacking ao anatin'ny arrays "...$var", izay mamela ny fanoloana ny arrays efa misy rehefa mamaritra array vaovao, dia nitarina mba hanohanana ny fanalahidin'ny tady (famantarana nomerika ihany no notohanana taloha). Ohatra, azonao ampiasaina amin'ny code: $array1 = [β€œa” => 1]; $array2 = ["b" => 2]; $array = [β€œa” => 0, …$array1, …$array2]; var_dump($array); // ["a" => 1, "b" => 2]
  • Avela hampiasa ny teny fototra "vaovao" amin'ny fanombohana, toy ny amin'ny famaritana asa ho toy ny mari-pamantarana default na amin'ny toetran'ny argument. class MyController { public function __construct( private Logger $logger = new NullLogger(), ) {} }
  • Azo atao ny manamarika ny fananana kilasy ho an'ny fidirana amin'ny vakiana fotsiny (ny fampahalalana amin'ny fananana toy izany dia azo soratana indray mandeha ihany, ary aorian'izay dia tsy azo ovaina izany). class PostData { public function __construct( public readonly string $title, public readonly DateTimeImmutable $date, ) {} } $post = new Post('Lohateny', /* … */); $post->title = 'hafa'; > Error: Tsy azo ovaina ny fananana read-only Post::$title
  • Nisy syntax vaovao nampiharina ho an'ny zavatra azo antsoina - azo amboarina ny fanakatonana amin'ny fiantsoana asa iray ary ampita izany ny sanda "..." ho adihevitra (izany hoe myFunc(...) fa tsy Closure::fromCallable('myFunc ')): function foo (int $a, int $b) { /* … */ } $foo = foo(…); $foo(a: 1, b: 2);
  • Nampiana fanohanana feno ho an'ny karazana sampanan-dalana, ahafahanao mamorona karazana vaovao amin'ny fampifangaroana ireo efa misy. Tsy toy ny karazana sendikΓ , izay mamaritra ny fanangonana karazany roa na maromaro, ny karazana sampanan-dalana dia mitaky ny fisian'ny tsy misy amin'ireo karazana voatanisa ireo, fa ireo karazana voatondro rehetra ao anatin'ilay fitambarana hofenoina. function generateSlug(HasTitle&HasId $post) { return strtolower ($post->getTitle()) . $post->getId(); }
  • Misy karazana vaovao "tsy misy" azo ampiasaina hampahafantarana ireo mpanadihady static fa hampitsahatra ny fanatanterahana ny programa ny fiasa iray, ohatra amin'ny fanipazana fanavahana na fanatanterahana ny fiasa fivoahana. function dd(mixed $input): tsy {exit; }
  • Misy asa vaovao array_is_list natolotra, izay ahafahanao mamaritra fa ny fanalahidy ao amin'ny array dia nalamina araka ny filaharan'ny fampitomboana ny soatoavina, manomboka amin'ny 0: $list = ["a", "b", "c"]; array_is_list($lisitra); // true $notAList = [1 => β€œa”, 2 => β€œb”, 3 => β€œc”]; array_is_list ($notAList); // false $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list ($alsoNotAList); // diso
  • Azonao atao izao ny mampiasa ny teny fanalahidy "farany" mba hisakanana ny tsy fiovaovan'ny kilasin'ny ray aman-dreny. class Foo { final public const X = "foo"; } class Bar dia manitatra Foo { public const X = "bar"; > Fahadisoana mahafaty: Bar::X dia tsy afaka manongotra ny tsy tapaka farany Foo::X }
  • Ny asa fsync sy fdatasync dia atolotra hanery ny fanovana ho voatahiry ao amin'ny cache kapila. $file = fopen("sample.txt", "w"); fwrite($file, "Vatiny sasany"); if (fsync($file)) { echo "Ny rakitra dia nahomby tamin'ny kapila."; } fclose($rakitra);
  • Nampiana ny fahafahana mampiasa ny prefixes "0o" sy "0O" ho an'ny isa octal, ho fanampin'ny prefix "0" teo aloha. 016 === 0o16; // marina 016 === 0O16; // marina
  • Atolotra ny famerana an-tsoratra ny fampiasana ny $GLOBALS, izay hitarika ho amin'ny fanitsakitsahana ny fifanarahana mihemotra, saingy ahafahana manafaingana ny asa amin'ny array. Ohatra, ny mety hanesorana ny fanoratana amin'ny $GLOBALS sy ny fandefasana $GLOBALS amin'ny fanondro dia heverina. Ny famakafakana ny fonosana 2000 dia mampiseho fa ny 23 amin'izy ireo ihany no hisy fiantraikany amin'io fiovana io. Ohatra, raha ankatoavina ny tolo-kevitra, ny 8.1 dia tsy hanohana fomba fiteny toy ny: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; tsy napetraka ($GLOBALS); by_ref($GLOBALS);
  • Ny fomba anatiny dia tokony hamerina ny karazana mety. Ao amin'ny PHP 8.1, ny famerenana karazana tsy mifanaraka amin'ny fanambarana asa dia hamokatra fampitandremana, fa amin'ny PHP 9.0 dia hosoloina fahadisoana ny fampitandremana.
  • Nitohy ny asa tamin'ny famindrana asa avy amin'ny fampiasana loharano mankany amin'ny fanodikodinana zavatra. Nafindra tany amin'ny zavatra ny asa finfo_* sy imap_*.
  • Nofoanana ny fandefasana sanda tsy misy dikany ho tohan-kevitra amin'ny fiasa anatiny voamarika fa tsy azo tsinontsinoavina. Ao amin'ny PHP 8.1, ny fampiasana constructs toy ny str_contains("string", null) dia hitarika fampitandremana, ary amin'ny PHP 9 amin'ny fahadisoana.
  • Fanampiana fanampiny ho an'ny algorithm hashing MurmurHash3 sy xxHash.

Source: opennet.ru

Add a comment