PHP 7.4 programmeertaal vrystelling

Na 'n jaar van ontwikkeling aangebied programmeertaal vrystelling PHP 7.4. Die nuwe tak bevat 'n reeks nuwe kenmerke, sowel as verskeie veranderinge wat versoenbaarheid verbreek.

Sleutel verbeterings in PHP 7.4:

  • Getikte Eienskappe - klas eienskappe kan nou tipe verklarings insluit, byvoorbeeld:

    klas gebruiker {
    publieke int $id;
    publieke string $naam;
    }

  • Afgekort sintaksis vir die definisie van funksies "fn(parameter_list) => uitdr" met omvang binding deur waarde. Byvoorbeeld, “fn($x) => $x + $y” is analoog aan “$fn2 = function ($x) use ($y) {return $x + $y;}”);
  • Snelskrif opdrag operateur "??=" wat gebruik kan word om 'n verstekwaarde te definieer ("a ??= b" is soortgelyk aan "a = a ?? b", as "a" gedefinieer is, word die waarde daarvan gestoor, en as dit nie gedefinieer is nie word die waarde "b" toegeken );
  • Beperk geleentheid die behoud van die oorerwingshiërargie van tipes in afgeleide opbrengstipes, of die vermoë om die hiërargie van die oorspronklike tipes in afgeleide argumenttipes om te keer (kovariansie terugkeer tipe en argument tipe teenstrydigheid). Die volgende konstrukte kan nou in PHP gebruik word:

    klas A {}
    klas B strek A {}

    klas vervaardiger {
    publieke funksie metode(): A {}
    }
    klas ChildProducer brei Producer {
    publieke funksie metode(): B {}
    }

  • Uitpak operateur binne skikkings "...$var", toelaat vervanging van bestaande skikkings uit te voer wanneer 'n nuwe skikking gedefinieer word;

    $parts = ['appel', 'peer'];
    $fruits = ['piesang', 'lemoen', …$dele, 'waatlemoen'];
    // ['piesang', 'lemoen', 'appel', 'peer', 'waatlemoen'];

  • Geleentheid visuele voorstelling van groot getalle met afbakeners in numeriese letters (1_000_000_00);
  • Ondersteun swak skakels, wat jou toelaat om 'n verwysing na 'n voorwerp te behou, maar nie die vullisverwyderaar blokkeer om die geassosieerde voorwerp uit te vee nie;
  • New meganisme objek serialisering ('n kombinasie van Serializable en __sleep()/__wakeup()), wat die Serializable-koppelvlak vervang het, wat afgekeur sal word;

    // Wys 'n skikking wat al die toestande van die voorwerp bevat;
    publieke funksie __serialize(): skikking;

    // Herstel die toestand van 'n voorwerp vanaf 'n skikking
    publieke funksie __unserialize(skikking $data): nietig;

  • Toegelaat om uitsonderings van 'n metode te gooi __toString();
  • Bygevoeg ondersteuning vir die vooraflaai van die objekkode-kas. Bygevoeg parameter vir instelling
    opcache.voorlaai, waardeur jy 'n PHP-skrip kan spesifiseer wat saamgestel sal word en loop wanneer die bediener begin. Hierdie skrip kan die opkode van ander lêers laai deur hul direkte insluiting of deur die opcache_compile_file() funksie te gebruik;

  • Crc32c-funksie by die Hash-uitbreiding gevoeg om kontrolesomme te bereken deur die Castagnoli-polinoom te gebruik;
  • Bygevoeg ondersteuning by die password_hash() funksie vir wagwoord hashing metodes argon2i en argin2id, in die implementering van die Natrium biblioteek, as PHP gebou is sonder libargon;
  • Bygevoeg funksie mb_str_split(), soortgelyk aan str_split(), maar werk nie met grepe nie, maar met karakterposisies in 'n multi-grepe string;
  • Die strip_tags()-funksie het nou die vermoë om 'n skikking met merkername deur te gee, d.w.s. in plaas van strip_tags($str, ' ') kan jy nou strip_tags($str, ['a', 'p'] spesifiseer);
  • proc_open() laat die operandes toe om in 'n skikking gelys te word, eerder as 'n string om te hardloop, en bied ook draadherleiding en ondersteuning vir 'n nullêerbeskrywer;

    proc_open(['php', '-r', 'echo "Hallo Wêreld\n";'], $beskrywers, $pype);

    // Soos 2>&1 in dop
    proc_open($cmd, [1 => ['pyp', 'w'], 2 => ['herleiding', 1]], $pype);

    // soos 2>/dev/nul of 2>nul in dop
    proc_open($cmd, [1 => ['pyp', 'w'], 2 => ['nul']], $pype);

  • Firebird/Interbase, Recode en WDDX uitbreidings is uitgesluit van die basiese verspreiding. Hierdie uitbreidings word nou deur PECL versprei;
  • Oorgeplaas na kategorie verouderd kenmerke soos geneste drieledige operateurs sonder hakies, toegang tot skikkingselemente en stringe met behulp van krullerige hakies ("$var{$idx}"), die is_real() funksie en casting to real, met behulp van die ouer sleutelwoord sonder 'n ouer klas, parameter allow_url_include konfigurasies , met behulp van array_key_exists() op voorwerpe.

    Die funksies get_magic_quotes_gpc(), get_magic_quotes_runtime(), en
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    'n Waarskuwing oor die gebruik van 'n verouderde kenmerk is verskaf wanneer gepoog word om verkeerde simbole in funksies te verwerk
    base_convert(), bindec(), octdec() en hexdec(), en wanneer 'n nie-stringpatroon in mb_ereg_replace() gespesifiseer word.

Bron: opennet.ru

Voeg 'n opmerking