PHP 7.4 programazio-lengoaia kaleratzea

Urtebeteko garapenaren ostean aurkeztu programazio lengoaia kaleratzea PHP 7.4. Adar berriak ezaugarri berri batzuk biltzen ditu, baita bateragarritasuna hausten duten hainbat aldaketa ere.

Gakoa hobekuntzak PHP 7.4n:

  • Idatzitako propietateak - Klaseen propietateek orain mota deklarazioak izan ditzakete, adibidez:

    klaseko erabiltzailea {
    public int $id;
    kate publikoa $izena;
    }

  • Laburtua "fn(parameter_list) => expr" funtzioak definitzeko sintaxia balioaren araberako loturarekin. Adibidez, β€œfn($x) => $x + $y”-ren antzekoa da β€œ$fn2 = funtzio ($x) erabilera ($y) {itzulera $x + $y;}”);
  • Takigrafia esleitzeko operadorea "??=" balio lehenetsi bat definitzeko erabil daitekeena ("a ??= b" "a = a ?? b"-ren antzekoa da, "a" definituta badago bere balioa gordetzen da, eta definitu ezean "b" balioa esleitzen zaio);
  • Mugatua aukera eratorritako itzuleran moten moten herentzia hierarkia gordetzea edo argumentu mota eratorrietan jatorrizko moten hierarkia alderantzikatzeko gaitasuna (kobariantza itzulera mota eta argumentu mota kontrabariantza). Hona hemen eraikitze hauek PHPn erabil daitezke:

    A klasea {}
    B klasea A {} hedatzen du

    klaseko ekoizlea {
    funtzio publikoaren metodoa (): A {}
    }
    ChildProducer klasea Producer { hedatzen du
    funtzio publikoaren metodoa (): B {}
    }

  • β€œβ€¦$var” array barruko eragilea deskonprimitzen ahalbidetuz lehendik dauden arrayen ordezkapena egin matrize berri bat definitzerakoan;

    $parts = ['sagarra', 'udarea'];
    $frutak = ['banana', 'laranja', ...$zatiak, 'Sandia'];
    // ['banana', 'laranja', 'sagarra', 'udarea', 'angurdia'];

  • Aukera zenbaki handien irudikapen bisuala mugatzaileak dituzten zenbakizko literaletan (1_000_000_00);
  • Lagundu lotura ahulak, objektu bati erreferentzia bat gordetzeko aukera ematen dutenak, baina ez diote zabor-biltzaileari lotutako objektua ezabatzea blokeatzen;
  • New mekanismo objektu serializazioa (Serializable eta __sleep()/__wakeup()-ren konbinazioa), Serializable interfazea ordezkatu zuena, zaharkituta geratuko dena;

    // Objektuaren egoera guztiak dituen array bat itzultzen du;
    funtzio publikoa __serialize(): array;

    // Objektu baten egoera berreskuratzen du array batetik
    funtzio publikoa __unserialize(array $data): void;

  • Metodo batetik salbuespenak botatzeko baimena __toString();
  • Objektu-kodeen cachea aldez aurretik kargatzeko laguntza gehitu da. Ezartzeko parametroa gehitu da
    opcache.aurrekarga, zeinaren bidez zerbitzaria abiarazten denean konpilatu eta exekutatuko den PHP script bat zehaztu dezakezu. Script honek beste fitxategi batzuen operazio-kodea kargatu dezake zuzenean sartzearen bidez edo opcache_compile_file() funtzioa erabiliz;

  • Hash luzapenean crc32c funtzioa gehitu da Castagnoli polinomioa erabiliz checksumak kalkulatzeko;
  • Argon2i eta argin2id pasahitzaren hash metodoetarako password_hash() funtzioari euskarria gehitu zaio, Sodium liburutegiaren inplementazioan, PHP libargon gabe eraikitzen bada;
  • mb_str_split() funtzioa gehitu da, str_split(ren antzekoa), baina ez byteekin funtzionatzen du, baina byte anitzeko kate batean karaktere-posizioekin;
  • strip_tags() funtzioak orain etiketa-izenekin array bat pasatzeko gaitasuna du, hau da. strip_tags($str, '') ordez strip_tags($str, ['a', 'p']) zehaztu dezakezu);
  • proc_open()-ek eragigaiak kate batean exekutatu beharrean array batean zenbatzea ahalbidetzen du, eta haria birbideratzea eta fitxategi deskribatzaile nulurako euskarria ere eskaintzen du;

    proc_open(['php', '-r', 'oihartzuna "Kaixo Mundua\n";'], $deskribatzaileak, $pipes);

    // 2>&1 bezala shell-ean
    proc_open($cmd, [1 => [β€˜tudia’, β€˜w’], 2 => [β€˜birbideratu’, 1]], $tutuak);

    // shell-en 2>/dev/null edo 2>nul bezala
    proc_open($cmd, [1 => ['tudia', 'w'], 2 => ['null']], $tutuak);

  • Firebird/Interbase, Recode eta WDDX luzapenak oinarrizko banaketatik kanpo geratzen dira. Luzapen hauek PECL bidez banatzen dira orain;
  • Kategorira transferitu zaharkitua ezaugarriak, hala nola, parentesirik gabeko habiaraturiko operadore ternarioak, array-elementuak eta kateak giltza kizkurren bidez atzitzea ("$var{$idx}"), is_real() funtzioa eta errealera igortzea, guraso klaserik gabeko gako-hitza erabiliz, allow_url_include konfigurazioak parametroa , objektuetan array_key_exists() erabiliz.

    get_magic_quotes_gpc(), get_magic_quotes_runtime() eta funtzioak
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Ezaugarri zaharkitu baten erabilerari buruzko abisua eman da funtzioetan ikur okerrak prozesatzen saiatzean
    base_convert(), bindec(), octdec() eta hexdec(), eta mb_ereg_replace(n) kate gabeko eredua zehazten denean.

Iturria: opennet.ru

Gehitu iruzkin berria