PHP 7.4 programmeerimiskeele väljalase

Pärast aastast arengut esitatakse programmeerimiskeele väljalase PHP 7.4. Uus haru sisaldab mitmeid uusi funktsioone, aga ka mitmeid muudatusi, mis rikuvad ühilduvust.

Võti täiustused PHP 7.4-s:

  • Trükitud omadused - klassi atribuudid võivad nüüd sisaldada tüübideklaratsioone, näiteks:

    class kasutaja {
    avalik int $id;
    avalik string $nimi;
    }

  • Lühendatult funktsioonide "fn(parameetrite_loend) => avaldis" määratlemise süntaks koos ulatuse sidumisega väärtuse järgi. Näiteks "fn($x) => $x + $y" on analoogne "$fn2 = funktsiooniga ($x) use ($y) {tagasi $x + $y;}");
  • Lühiülesannete operaator "??=", mida saab kasutada vaikeväärtuse määratlemiseks ("a ??= b" on sarnane "a = a ?? b", kui "a" on defineeritud, siis väärtus salvestatakse ja kui seda pole defineeritud on määratud väärtus "b" );
  • Piiratud võimalus tuletatud tagastustüüpide tüüpide pärimishierarhia säilitamine või tuletatud argumenditüüpide algtüüpide hierarhia ümberpööramine (kovariatsioon tagastustüüp ja argumendi tüüp kontravariatsioon). Nüüd saab PHP-s kasutada järgmisi konstruktsioone:

    klass A {}
    klass B laiendab A {}

    klass Produtsent {
    avaliku funktsiooni meetod(): A {}
    }
    klass ChildProducer pikendab tootja {
    avaliku funktsiooni meetod(): B {}
    }

  • Lahtipakkimine massiivides “…$var”, lubades teostada uue massiivi määratlemisel olemasolevate massiivide asendamine;

    $parts = ['õun', 'pirn'];
    $puuviljad = ['banaan', 'apelsin', …$osad, 'arbuus'];
    // ['banaan', 'apelsin', 'õun', 'pirn', 'arbuus'];

  • Võimalus suurte arvude visuaalne esitus eraldusmärkidega arvliteraalides (1_000_000_00);
  • Toetama nõrgad lülid, mis võimaldavad säilitada viite objektile, kuid ei takista prügikorjajal seotud objekti kustutamist;
  • uus masinad objektide serialiseerimine (kombinatsioon Serialisable ja __sleep()/__wakeup()), mis asendas Serialisable liidese, mille tugi kaotatakse;

    // Tagastab massiivi, mis sisaldab kõiki objekti olekuid;
    avalik funktsioon __serialize(): massiiv;

    // Taastab massiivist objekti oleku
    public function __unserialize(massiivi $andmed): void;

  • Lubatud teha meetodist erandeid __toString();
  • Lisatud tugi objektikoodi vahemälu eellaadimiseks. Lisatud parameeter seadistamiseks
    opcache.preload, mille kaudu saate määrata PHP-skripti, mis kompileeritakse ja käivitatakse serveri käivitumisel. See skript võib laadida teiste failide opkoodi nende otsese kaasamise või funktsiooni opcache_compile_file() abil;

  • Lisati räsilaiendile funktsioon crc32c, et arvutada Castagnoli polünoomi abil kontrollsummasid;
  • Lisatud tugi funktsioonile password_hash() paroolide räsimeetoditele argon2i ja argin2id, Sodium teegi juurutamisel, kui PHP on ehitatud ilma libargonita;
  • Lisatud funktsioon mb_str_split(), mis sarnaneb str_split(), kuid ei tööta mitte baitidega, vaid märgipositsioonidega mitmebaidises stringis;
  • Funktsioonil strip_tags() on nüüd võimalus edastada massiivi sildinimedega, st. strip_tags($str, ' ') asemel saad nüüd määrata riba_sildid($str, ['a', 'p']);
  • proc_open() võimaldab operandid loetleda massiivi, mitte stringina, samuti pakub see lõime ümbersuunamist ja tuge nullfaili deskriptorile;

    proc_open(['php', '-r', 'echo "Tere maailm\n";'], $deskriptorid, $pipes);

    // Nagu 2>&1 kestas
    proc_open($cmd, [1 => ['toru', 'w'], 2 => ['ümbersuunamine', 1]], $torud);

    // nagu 2>/dev/null või 2>null shellis
    proc_open($cmd, [1 => ['toru', 'w'], 2 => ['null']], $torud);

  • Firebird/Interbase, Recode ja WDDX laiendused on põhidistributsioonist välja jäetud. Neid laiendusi levitatakse nüüd PECL-i kaudu;
  • Kategooriasse üle viidud aegunud funktsioonid, nagu pesastatud kolmikoperaatorid ilma sulgudeta, massiivi elementidele ja stringidele ligipääs lokkis sulgude ("$var{$idx}") abil, funktsioon is_real() ja ülekandmine reaali, põhimärksõna kasutamine ilma vanemklassita, parameeter allow_url_include konfiguratsioonid , kasutades objektidel massiivi_võti_exists().

    Funktsioonid get_magic_quotes_gpc(), get_magic_quotes_runtime() ja
    hebrevc(), convert_cyr_string(), raha_vorming(), ezmlm_hash(), taastamise_kaasamise_tee(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Kui proovite töödelda funktsioonides valesid sümboleid, on antud hoiatus vananenud funktsiooni kasutamise kohta
    base_convert(), bindec(), octdec() ja hexdec() ning mittestringi mustri määramisel failis mb_ereg_replace().

Allikas: opennet.ru

Lisa kommentaar