Rilaxx tal-lingwa ta' programmar PHP 7.4

Wara sena ta 'żvilupp ippreżentata rilaxx tal-lingwa ta 'programmar PHP 7.4. Il-fergħa l-ġdida tinkludi serje ta 'karatteristiċi ġodda, kif ukoll diversi bidliet li jiksru l-kompatibilità.

Ewlenin titjib f'PHP 7.4:

  • Proprjetajiet ittajpjati - il-proprjetajiet tal-klassi issa jistgħu jinkludu dikjarazzjonijiet tat-tip, pereżempju:

    Utent tal-klassi {
    public int $id;
    string pubblika $name;
    }

  • Imqassar sintassi għad-definizzjoni tal-funzjonijiet "fn(parameter_list) => expr" bl-ambitu li jorbot bil-valur. Pereżempju, “fn($x) => $x + $y” hija analoga għal “$fn2 = function ($x) use ($y) {return $x + $y;}”);
  • Operatur ta' assenjazzjoni shorthand "??=" li jista' jintuża biex jiddefinixxi valur default ("a ??= b" huwa simili għal "a = a ?? b", jekk "a" huwa definit il-valur tiegħu jinħażen, u jekk mhux definit huwa huwa assenjat il-valur "b" );
  • Limitat opportunità il-preservazzjoni tal-ġerarkija tal-wirt tat-tipi f'tipi ta' ritorn derivati, jew il-kapaċità li ireġġa' lura l-ġerarkija tat-tipi oriġinali f'tipi ta' argument derivati ​​(kovarjanza kontravarjanza tat-tip ta’ ritorn u tat-tip ta’ argument). Il-kostruzzjonijiet li ġejjin issa jistgħu jintużaw fil-PHP:

    klassi A {}
    klassi B testendi A {}

    Produttur tal-klassi {
    metodu tal-funzjoni pubblika (): A {}
    }
    klassi ChildProducer testendi Producer {
    metodu tal-funzjoni pubblika (): B {}
    }

  • Operatur tal-ispakkjar ġewwa arrays “…$var”, tippermetti twettaq sostituzzjoni ta 'arrays eżistenti meta tiddefinixxi array ġdid;

    $parts = ['tuffieħ', 'lanġas'];
    $frott = ['banana', 'oranġjo', ...$partijiet, 'dulliegħ'];
    // ['banana', 'oranġjo', 'tuffieħ', 'lanġas', 'dulliegħ'];

  • Opportunità rappreżentazzjoni viżwali ta' numri kbar b'delimitaturi f'literali numeriċi (1_000_000_00);
  • Appoġġ rabtiet dgħajfa, li jippermettulek iżżomm referenza għal oġġett, iżda ma jimblokkax lill-kollettur taż-żibel milli jħassar l-oġġett assoċjat;
  • New mekkaniżmu serialization tal-oġġett (kombinazzjoni ta 'Serializable u __sleep()/__wakeup()), li ssostitwixxa l-interface Serializable, li se jkun deprecated;

    // Jirritorna firxa li fiha l-istati kollha tal-oġġett;
    funzjoni pubblika __serialize(): array;

    // Jirrestawra l-istat ta 'oġġett minn firxa
    funzjoni pubblika __unserialize(array $data): null;

  • Ippermettiet li tarmi eċċezzjonijiet minn metodu __toString();
  • Appoġġ miżjud għall-preloading tal-cache tal-kodiċi tal-oġġett. Miżjud parametru għall-issettjar
    opcache.preload, li permezz tiegħu tista 'tispeċifika script PHP li se jiġi kkompilat u mmexxi meta jibda s-server. Dan l-iskritt jista' jgħabbi l-opcode ta' fajls oħra permezz tal-inklużjoni diretta tagħhom jew bl-użu tal-funzjoni opcache_compile_file();

  • Miżjud funzjoni crc32c mal-estensjoni Hash biex tikkalkula checksums bl-użu tal-polinomju Castagnoli;
  • Appoġġ miżjud għall-funzjoni password_hash() għall-metodi ta 'hashing tal-password argon2i u argin2id, fl-implimentazzjoni tal-librerija tas-Sodium, jekk PHP jinbena mingħajr libargon;
  • Funzjoni miżjuda mb_str_split(), simili għal str_split(), iżda topera mhux b'bytes iżda b'pożizzjonijiet ta' karattri f'sekwenza b'ħafna byte;
  • Il-funzjoni strip_tags() issa għandha l-abbiltà li tgħaddi firxa b'ismijiet ta 'tag, i.e. minflok strip_tags($str, ‘’) issa tista’ tispeċifika strip_tags($str, [‘a’, ‘p’]);
  • proc_open() jippermetti li l-operandi jiġu enumerati f'array aktar milli f'sekwenza biex titħaddem, u tipprovdi wkoll direzzjoni mill-ġdid tal-ħajt u appoġġ għal deskrittur tal-fajl null;

    proc_open(['php', '-r', 'echo "Hello World\n";'], $deskritturi, $pipes);

    // Bħal 2>&1 fil-qoxra
    proc_open($cmd, [1 => [‘pajp’, ‘w’], 2 => [‘redirect’, 1]], $pajpijiet);

    // bħal 2>/dev/null jew 2>nul fil-qoxra
    proc_open($cmd, [1 => [‘pajp’, ‘w’], 2 => [‘null’]], $pajpijiet);

  • L-estensjonijiet Firebird/Interbase, Recode u WDDX huma esklużi mid-distribuzzjoni bażika. Dawn l-estensjonijiet issa huma mqassma permezz tal-PECL;
  • Trasferit għall-kategorija skaduti karatteristiċi bħal operaturi ternarji nested mingħajr parentesi, aċċess għall-elementi ta’ firxa u kordi bl-użu ta’ ċineg kaboċċi (“$var{$idx}”), il-funzjoni is_real() u casting għal reali, bl-użu tal-kelma prinċipali ġenitur mingħajr klassi ġenitur, parametru allow_url_include konfigurazzjonijiet , billi tuża array_key_exists() fuq oġġetti.

    Il-funzjonijiet get_magic_quotes_gpc(), get_magic_quotes_runtime(), u
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Twissija dwar l-użu ta' karatteristika skaduta ġiet ipprovduta meta ppruvaw jiġu pproċessati simboli mhux korretti fil-funzjonijiet
    base_convert(), bindec(), octdec() u hexdec(), u meta tispeċifika mudell mhux string f'mb_ereg_replace().

Sors: opennet.ru

Żid kumment