Rhyddhau iaith raglennu PHP 7.4

Ar Γ΄l blwyddyn o ddatblygiad wedi'i gyflwyno rhyddhau iaith rhaglennu PHP 7.4. Mae'r gangen newydd yn cynnwys cyfres o nodweddion newydd, yn ogystal Γ’ nifer o newidiadau sy'n torri cydnawsedd.

Allwedd gwelliannau yn PHP 7.4:

  • Priodweddau Teipiedig - gall priodweddau dosbarth bellach gynnwys datganiadau math, er enghraifft:

    Defnyddiwr dosbarth {
    int $id cyhoeddus;
    llinyn cyhoeddus $name;
    }

  • Talfyredig cystrawen ar gyfer diffinio swyddogaethau β€œfn(parameter_list) => expr” gyda chwmpas wedi'i rwymo yn Γ΄l gwerth. Er enghraifft, mae β€œfn($x) => $x + $y” yn cyfateb i β€œ$fn2 = swyddogaeth ($x) defnyddio ($y) {dychwelyd $x + $y;}”);
  • Gweithredwr aseiniad llaw-fer "??=" y gellir ei ddefnyddio i ddiffinio gwerth rhagosodedig ("a ??= b" yn debyg i "a = a ?? b", os yw "a" yn cael ei ddiffinio mae ei werth yn cael ei storio, ac os na chaiff ei ddiffinio yn cael y gwerth "b" );
  • Cyfyngedig cyfle cadw hierarchaeth etifeddiaeth mathau mewn mathau o ddychweliadau deilliedig, neu'r gallu i wrthdroi hierarchaeth y mathau gwreiddiol mewn mathau o ddadl ddeilliedig (cydamrywiant math dychwelyd a gwrthamrywiad math dadl). Bellach gellir defnyddio'r lluniadau canlynol yn PHP:

    dosbarth A {}
    dosbarth B yn ymestyn A {}

    Cynhyrchydd dosbarth {
    dull swyddogaeth gyhoeddus(): A {}
    }
    dosbarth ChildProducer yn ymestyn Cynhyrchydd {
    dull swyddogaeth gyhoeddus(): B {}
    }

  • Yn dadbacio gweithredwr y tu mewn i araeau β€œβ€¦$var”, caniatΓ‘u amnewid araeau presennol wrth ddiffinio arae newydd;

    $parts = ['afal', 'gellyg'];
    $fruits = [ 'banana', 'oren', ...$parts, 'watermelon'];
    // ['banana', 'oren', 'afal', 'gellyg', 'watermelon'];

  • Cyfle cynrychiolaeth weledol niferoedd mawr gydag amffinyddion mewn llythrennol rhifol (1_000_000_00);
  • Cymorth cysylltiadau gwan, sy'n eich galluogi i gadw cyfeiriad at wrthrych, ond peidiwch Γ’ rhwystro'r casglwr sbwriel rhag dileu'r gwrthrych cysylltiedig;
  • New y mecanwaith cyfresoli gwrthrychau (cyfuniad o Serializable a __sleep()/__wakeup()), a ddisodlodd y rhyngwyneb Serializable, a fydd yn anghymeradwy;

    // Yn dychwelyd arae sy'n cynnwys holl gyflwr y gwrthrych;
    swyddogaeth gyhoeddus __serialize(): arae;

    // Yn adfer cyflwr gwrthrych o arae
    swyddogaeth gyhoeddus __unserialize(arae $data): gwag;

  • Caniateir i daflu eithriadau o ddull __i Llinyn();
  • Ychwanegwyd cefnogaeth ar gyfer rhag-lwytho'r storfa cod gwrthrych. Ychwanegwyd paramedr ar gyfer gosod
    opcache.preload, lle gallwch chi nodi sgript PHP a fydd yn cael ei llunio a'i rhedeg pan fydd y gweinydd yn dechrau. Gall y sgript hon lwytho cod op ffeiliau eraill trwy eu cynnwys yn uniongyrchol neu ddefnyddio'r swyddogaeth opcache_compile_file();

  • Ychwanegwyd swyddogaeth crc32c i'r estyniad Hash i gyfrifo symiau siec gan ddefnyddio'r polynomial Castagnoli;
  • Ychwanegwyd cefnogaeth i'r swyddogaeth password_hash() ar gyfer dulliau stwnsio cyfrinair argon2i ac argin2id, wrth weithredu'r llyfrgell Sodiwm, os caiff PHP ei adeiladu heb libargon;
  • Wedi ychwanegu ffwythiant mb_str_split(), tebyg i str_split(), ond yn gweithredu nid gyda beit ond gyda safleoedd nod mewn llinyn aml-beit;
  • Bellach mae gan y swyddogaeth strip_tags () y gallu i basio arae gydag enwau tagiau, h.y. yn lle strip_tags($str, β€˜β€™) gallwch nawr nodi strip_tags($str, [β€˜a’, β€˜p’]);
  • proc_open() yn caniatΓ‘u i'r operands gael eu rhestru mewn arae, yn hytrach na llinyn i'w rhedeg, ac mae hefyd yn darparu ailgyfeirio edau a chefnogaeth ar gyfer disgrifydd ffeil nwl;

    proc_open(['php', '-r', 'adlais"Helo Fyd\n";'], $disgrifyddion, $pibellau);

    // Fel 2>&1 yn y plisgyn
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['ailgyfeirio', 1]], $pibellau);

    // fel 2>/dev/null neu 2>nul yn y plisgyn
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pibellau);

  • Mae estyniadau Firebird/Interbase, Recode a WDDX wedi'u heithrio o'r dosbarthiad sylfaenol. Mae'r estyniadau hyn bellach yn cael eu dosbarthu trwy PECL;
  • Trosglwyddwyd i gategori hen ffasiwn nodweddion fel gweithredwyr teiran nythu heb gromfachau, cyrchu elfennau arae a llinynnau gan ddefnyddio braces cyrliog (β€œ$var{$idx}”), y ffwythiant is_real() a chastio i real, gan ddefnyddio allweddair rhiant heb riant ddosbarth, paramedr allow_url_include configurations , gan ddefnyddio array_key_exists() ar wrthrychau.

    Mae'r swyddogaethau get_magic_quotes_gpc(), get_magic_quotes_runtime(), a
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Mae rhybudd am ddefnyddio nodwedd anarferedig wedi'i ddarparu wrth geisio prosesu symbolau anghywir mewn ffwythiannau
    base_convert(), bindec(), octdec() a hexdec(), ac wrth nodi patrwm di-linyn yn mb_ereg_replace().

Ffynhonnell: opennet.ru

Ychwanegu sylw