Eldono de PHP 7.4 programlingvo

Post jaro da evoluo prezentita eldono de programlingvo PHP 7.4. La nova branĉo inkluzivas serion de novaj funkcioj, same kiel plurajn ŝanĝojn, kiuj rompas kongruon.

Ŝlosilo plibonigoj en PHP 7.4:

  • Tajpitaj Propraĵoj - klasaj propraĵoj nun povas inkluzivi tipdeklarojn, ekzemple:

    klaso Uzanto {
    publika int $id;
    publika ĉeno $nomo;
    }

  • Mallongigita sintakso por difinado de funkcioj “fn(parameter_list) => expr” kun amplekso-ligado laŭ valoro. Ekzemple, “fn($x) => $x + $y” estas analoga al “$fn2 = funkcio ($x) uzo ($y) {return $x + $y;}”);
  • Operaciisto de tasko de stenografio "??=" kiu povas esti uzata por difini defaŭltan valoron ("a ??= b" similas al "a = a ?? b", se "a" estas difinita ĝia valoro estas konservita, kaj se ne difinita ĝi ricevas la valoron "b" );
  • Limigita ŝanco konservante la heredan hierarkion de tipoj en derivitaj revenspecoj, aŭ la kapablo inversigi la hierarkion de la originaj tipoj en derivitaj argumentspecoj (kunvarianco revena tipo kaj argumenttipo kontraŭvarianco). La sekvaj konstrukcioj nun povas esti uzataj en PHP:

    klaso A {}
    klaso B etendas A {}

    klaso Produktanto {
    publika funkcio metodo(): A {}
    }
    klaso ChildProducer etendas Produktanto {
    publika funkcio metodo(): B {}
    }

  • Malpakanta operatoro ene de tabeloj "...$var", permesante plenumi anstataŭigon de ekzistantaj tabeloj dum difinado de nova tabelo;

    $partoj = ['pomo', 'piro'];
    $fruktoj = ['banano', 'oranĝo', …$partoj, 'akvomelono'];
    // ['banano', 'oranĝo', 'pomo', 'piro', 'akvomelono'];

  • Ebleco vida reprezentado de grandaj nombroj kun limigiloj en numeraj literaloj (1_000_000_00);
  • subteno malfortaj ligoj, kiuj ebligas al vi konservi referencon al objekto, sed ne malhelpas la rubkolektilon forviŝi la rilatan objekton;
  • Nova mekanismo objekta seriigo (kombinaĵo de Serializable kaj __sleep()/__wakeup()), kiu anstataŭigis la Serializable-interfacon, kiu estos malrekomendita;

    // Liveras tabelon enhavantan ĉiujn statojn de la objekto;
    publika funkcio __serialize(): tabelo;

    // Restarigas la staton de objekto el tabelo
    publika funkcio __malseriigi(tabelo $datumoj): malplena;

  • Permesita ĵeti esceptojn de metodo __toString();
  • Aldonita subteno por antaŭŝargado de la objektkoda kaŝmemoro. Aldonita parametro por agordo
    opcache.preŝarĝo, per kiu vi povas specifi PHP-skripton, kiu estos kompilita kaj rulita kiam la servilo komenciĝos. Ĉi tiu skripto povas ŝargi la opkodon de aliaj dosieroj per ilia rekta inkludo aŭ uzante la funkcion opcache_compile_file();

  • Aldonita crc32c-funkcio al la etendaĵo Hash por kalkuli ĉeksumojn uzante la Castagnoli-polinomon;
  • Aldonita subteno al la password_hash() funkcio por pasvortaj haĉaj metodoj argon2i kaj argin2id, en la efektivigo de la Natria biblioteko, se PHP estas konstruita sen libargon;
  • Aldonita funkcio mb_str_split(), simila al str_split(), sed funkcianta ne per bajtoj sed kun signopozicioj en plurbajta ĉeno;
  • La funkcio strip_tags() nun havas la kapablon pasi tabelon kun etikednomoj, t.e. anstataŭ strip_tags($str, ' ') vi nun povas specifi strip_tags($str, ['a', 'p']);
  • proc_open() permesas al la operaciantoj esti listigitaj en tabelo, prefere ol ĉeno ruliĝi, kaj ankaŭ provizas fadenan redirekton kaj subtenon por nula dosierpriskribilo;

    proc_open(['php', '-r', 'eĥo "Saluton Mondo\n";'], $priskribiloj, $pipoj);

    // Kiel 2>&1 en ŝelo
    proc_open($cmd, [1 => ['pipo', 'w'], 2 => ['alidirektilo', 1]], $pipoj);

    // kiel 2>/dev/null aŭ 2>nul en ŝelo
    proc_open($cmd, [1 => ['pipo', 'w'], 2 => ['nulo']], $pipoj);

  • Firebird/Interbase, Recode kaj WDDX etendaĵoj estas ekskluditaj de la baza distribuo. Ĉi tiuj etendaĵoj nun estas distribuitaj per PECL;
  • Transdonite al kategorio malmoderna funkcioj kiel nestitaj ternaraj operatoroj sen krampoj, aliro de tabelelementoj kaj ŝnuroj uzante krampojn ("$var{$idx}"), is_real() kaj casting al realo, uzante la gepatran ŝlosilvorton sen gepatra klaso, parametro allow_url_include agordojn, uzante array_key_exists() sur objektoj.

    La funkcioj get_magic_quotes_gpc(), get_magic_quotes_runtime(), kaj
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response (), ldap_control_paged_result (), ReflectionType::__toString().

    Averto pri la uzo de malnoviĝinta trajto estis provizita kiam oni provas prilabori malĝustajn simbolojn en funkcioj
    base_convert(), bindec(), octdec() kaj hexdec(), kaj kiam oni specifas ne-ŝnuran ŝablonon en mb_ereg_replace().

fonto: opennet.ru

Aldoni komenton