PHP 7.4 serbestberdana zimanê bernamekirinê

Piştî salek pêşveçûn pêşkêş kirin serbestberdana zimanê bernamekirinê PHP 7.4. Şaxa nû rêzek taybetmendiyên nû vedihewîne, û her weha gelek guhertinên ku lihevhatinê dişkînin.

Qûfle serrastkirinî di PHP 7.4 de:

  • Taybetmendiyên tîpkirî - Taybetmendiyên polê naha dikarin danezanên tîpan jî bihewînin, mînakî:

    class Bikarhêner {
    giştî int $id;
    rêzika giştî $name;
    }

  • Kurtekirin hevoksaziya ji bo diyarkirina fonksiyonên "fn (lîsteya_parameter) => expr" bi nirxê ve girêdayî ye. Mînakî, "fn($x) => $x + $y" wekî "$fn2 = fonksiyona ($x) bikar tîne ($y) {vegere $x + $y;}");
  • Operatorê peywira kurtenivîsê "??=" ku dikare ji bo danasîna nirxek xwerû were bikar anîn ("a ??= b" dişibihe "a = a ?? b", heke "a" were diyar kirin nirxa wê tê hilanîn, û heke neyê diyar kirin nirxa "b" tê dayîn);
  • Limited fersend parastina hiyerarşiya mîrasî ya celeban di celebên vegerê yên jêhatî de, an jî şiyana berevajîkirina hiyerarşiya celebên orîjînal di celebên argumanên jêhatî de (covariance cureya vegerê û nakokiya cureya argumanê). Avakirinên jêrîn naha dikarin di PHP-ê de werin bikar anîn:

    pola A {}
    pola B A dirêj dike {}

    class Producer {
    rêbaza fonksiyona giştî(): A {}
    }
    class ChildProducer berfireh dike Producer {
    rêbaza fonksiyona giştî(): B {}
    }

  • Vekirina operatorê di hundurê rêzikên "…$var", destûr dide dema danasîna rêzek nû cîgirkirina rêzikên heyî pêk bîne;

    $parts = ['sêv', 'hirmî'];
    $fruits = ['mûz', 'porteqal', ...$parts, 'zebek'];
    // ['mûz', 'porteqal', 'sêv', 'hirmî', 'zebek'];

  • Fersend temsîla dîtbarî ya hejmarên mezin bi veqetandekên bi tîpên jimarî (1_000_000_00);
  • alîkarî girêdanên qels, ku destûrê dide te ku hûn referansek li ser tiştekê bihêlin, lê berhevkarê çopê ji jêbirina tiştê têkildar asteng nakin;
  • mekanîk serialîzasyona objektê (tevlihevkirina Serializable û __sleep()/__wakeup()), ku şûna navrûya Serializable girt, ya ku dê were paşguh kirin;

    (
    fonksiyona giştî __serialize(): array;

    // Rewşa heyberekê ji rêzê vedigerîne
    fonksiyona giştî __unserialize(array $data): betal;

  • Destûr dide ku ji rêbazek îstîsnayan bavêje __toString();
  • Piştgiriyek ji bo pêşda barkirina cache koda objektê zêde kir. Parametreya zêdekirî ji bo mîhengê
    opcache.preload, bi rêya wê hûn dikarin skrîptek PHP-ê diyar bikin ku dema server dest pê dike dê were berhev kirin û xebitandin. Ev skrîpt dikare opcode pelên din bi tevlêbûna rasterast an bi karanîna fonksiyona opcache_compile_file() bar bike;

  • Fonksiyona crc32c li dirêjkirina Hash zêde kir da ku jimareyên kontrolê bi karanîna polynomiya Castagnoli hesab bike;
  • Di pêkanîna pirtûkxaneya Sodyûmê de, heke PHP bê libargon were çêkirin, piştgirî ji fonksiyona password_hash() re ji bo rêbazên hejandina şîfreya argon2i û argin2id zêde kir;
  • Fonksiyona zêdekirî mb_str_split(), dişibihe str_split(), lê ne bi byte lê bi pozîsyonên karakteran di rêzikek pir-byte de dixebite;
  • Fonksiyona strip_tags() naha xwedan şiyana derbaskirina arrayek bi navên etîketan e, yanî. li şûna strip_tags($str, '') niha hûn dikarin strip_tags diyar bikin ($str, ['a', 'p']);
  • proc_open() dihêle ku operand li şûna rêzek ku were xebitandin, di rêzek rêzek de bêne navnîş kirin, û her weha beralîkirina mijarê û piştgirî ji bo ravekerek pelê null peyda dike;

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

    // Wek 2>&1 di şêlê de
    proc_open($cmd, [1 => ['boriyeke', 'w'], 2 => ['beralîkirin', 1]], $borî);

    // wek 2>/dev/null an 2>nul di şêlê de
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • Firebird / Interbase, Recode û pêvekên WDDX ji belavkirina bingehîn têne derxistin. Ev dirêjkirin niha bi rêya PECL têne belav kirin;
  • Veguheztin kategoriyê kevn taybetmendiyên wekî operatorên sêdar ên hêlînkirî yên bê parantez, gihandina hêmanên rêzê û rêzan bi karanîna brayên çîçek ("$var{$idx}"), fonksiyona is_real() û avêtina rastîn, karanîna peyva sereke ya dêûbavê bêyî çîna dêûbav, parametre allow_url_include , array_key_exists() li ser tiştan bikar tîne.

    Fonksiyonên get_magic_quotes_gpc(), get_magic_quotes_runtime(), û
    hebrevc (), convert_cyr_string (), money_format (), ezmlm_hash (), restore_include_path (), ldap_control_paged_result_response (), ldap_control_paged_result (), ReflectionType::__toString().

    Hişyarîyek di derbarê karanîna taybetmendiyek kevnar de hate peyda kirin dema ku hewl didin ku sembolên çewt di fonksiyonan de bişopînin.
    base_convert(), bindec(), octdec() û hexdec(), û dema ku di mb_ereg_replace() de şablonek ne-string diyar dike.

Source: opennet.ru

Add a comment