PHP 7.4 ක්‍රමලේඛන භාෂා නිකුතුව

වසරක සංවර්ධනයෙන් පසු ඉදිරිපත් කරන ලදී ක්‍රමලේඛන භාෂා නිකුතුව PHP 7.4. නව ශාඛාවේ නව විශේෂාංග මාලාවක් මෙන්ම ගැළපුම බිඳ දමන වෙනස්කම් කිහිපයක් ද ඇතුළත් වේ.

යතුර වැඩිදියුණු කිරීම් PHP 7.4 හි:

  • ටයිප් කළ ගුණාංග - පන්ති ගුණාංගවලට දැන් වර්ග ප්‍රකාශ ඇතුළත් විය හැක, උදාහරණයක් ලෙස:

    පන්තියේ පරිශීලක {
    පොදු int $id;
    පොදු තන්තුව $name;
    }

  • කෙටි කර ඇත "fn(parameter_list) => expr" ශ්‍රිතයන් අර්ථ දැක්වීම සඳහා වාක්‍ය ඛණ්ඩය අගය අනුව විෂය පථය බන්ධනය කරයි. උදාහරණයක් ලෙස, “fn($x) => $x + $y” යනු “$fn2 = ශ්‍රිතය ($x) භාවිතය ($y) {ආපසු $x + $y;}”) ට සමාන වේ;
  • කෙටිකතා පැවරුම් ක්රියාකරු පෙරනිමි අගයක් නිර්වචනය කිරීමට භාවිතා කළ හැකි "??=" ("a ??= b" යනු "a = a ?? b" ට සමාන වේ, "a" නිර්වචනය කළහොත් එහි අගය ගබඩා වේ, සහ එය අර්ථ දක්වා නොමැති නම් "b" අගය පවරනු ලැබේ );
  • සීමා සහිතයි අවස්ථාව ව්‍යුත්පන්න ප්‍රතිලාභ වර්ගවල වර්ගවල උරුම ධුරාවලිය ආරක්ෂා කිරීම හෝ ව්‍යුත්පන්න තර්ක වර්ගවල මුල් වර්ගවල ධුරාවලිය ආපසු හැරවීමේ හැකියාව (සහජීවනය ප්‍රතිලාභ වර්ගය සහ තර්ක ආකාරයේ ප්‍රතිවිරුද්ධතාව). පහත ඉදිකිරීම් දැන් PHP හි භාවිතා කළ හැක:

    A {} පන්තිය
    B පන්තිය A {} දිගු කරයි

    පන්තියේ නිෂ්පාදක {
    පොදු කාර්ය ක්‍රමය(): A {}
    }
    පන්තියේ ළමා නිෂ්පාදකයා නිෂ්පාදකයා දිගු කරයි {
    පොදු කාර්ය ක්‍රමය(): B {}
    }

  • “...$var” අරාව තුළ ක්‍රියාකරු අසුරමින්, ඉඩ දෙනවා නව අරාවක් නිර්වචනය කිරීමේදී පවතින අරා ආදේශ කිරීම සිදු කරන්න;

    $parts = ['ඇපල්', 'pear'];
    $fruits = ['කෙසෙල්', 'තැඹිලි', ...$කොටස්, 'කොමඩු'];
    // ['කෙසෙල්', 'තැඹිලි', 'ඇපල්', 'pear', 'කොමඩු'];

  • අවස්ථාව සංඛ්‍යාත්මක වචන වලින් පරිසීමක සහිත විශාල සංඛ්‍යා දෘශ්‍ය නිරූපණය (1_000_000_00);
  • සහාය දුර්වල සබැඳි, වස්තුවක් වෙත යොමුවක් රඳවා ගැනීමට ඔබට ඉඩ සලසයි, නමුත් සම්බන්ධිත වස්තුව මකා දැමීමෙන් කසළ එකතු කරන්නා අවහිර නොකරන්න;
  • නව යාන්ත්‍රණය වස්තු අනුක්‍රමිකකරණය (Serializable සහ __sleep()/__wakeup() වල එකතුවක්), එය ප්‍රතික්ෂේප කරනු ලබන Serializable අතුරුමුහුණත ප්‍රතිස්ථාපනය කරයි;

    // වස්තුවේ සියලුම තත්වයන් අඩංගු අරාවක් ආපසු ලබා දෙයි;
    පොදු කාර්යය __serialize(): array;

    // අරාවකින් වස්තුවක තත්ත්වය ප්‍රතිසාධනය කරයි
    පොදු කාර්යය __unserialize(array $data): void;

  • ක්‍රමයකින් ව්‍යතිරේක විසි කිරීමට අවසර ඇත __toString();
  • වස්තු කේත හැඹිලිය පූර්ව පූරණය කිරීම සඳහා සහය එක් කරන ලදී. සැකසීම සඳහා පරාමිතිය එක් කරන ලදී
    opcache.preload, ඔබට PHP ස්ක්‍රිප්ට් එකක් නියම කළ හැකි අතර එය සම්පාදනය කර සේවාදායකය ආරම්භ වන විට ක්‍රියාත්මක වේ. මෙම ස්ක්‍රිප්ටයට අනෙකුත් ගොනුවල සෘජු ඇතුළත් කිරීම් හරහා හෝ opcache_compile_file() ශ්‍රිතය භාවිතයෙන් ඒවායේ opcode පූරණය කළ හැක;

  • Castagnoli බහුපද භාවිතා කරමින් චෙක්සම් ගණනය කිරීමට හෑෂ් දිගුවට crc32c ශ්‍රිතය එක් කරන ලදී;
  • සෝඩියම් පුස්තකාලය ක්‍රියාත්මක කිරීමේදී, PHP libargon නොමැතිව ගොඩනගා ඇත්නම්, argon2i සහ argin2id මුරපද හැෂිං ක්‍රම සඳහා password_hash() ශ්‍රිතයට සහය එක් කරන ලදී;
  • එක් කරන ලද ශ්‍රිතය mb_str_split(), str_split() හා සමාන නමුත් බයිට් සමඟ නොව බහු-බයිට් තන්තුවක අක්ෂර ස්ථාන සමඟ ක්‍රියා කරයි;
  • ස්ට්‍රිප්_ටැග්ස්() ශ්‍රිතයට දැන් ටැග් නම් සහිත අරාවක් සම්මත කිරීමේ හැකියාව ඇත, i.e. තීරු_ටැග් ($str, ‘’) වෙනුවට ඔබට දැන් තීරු_ටැග් ($str, [‘a’, ‘p’]) නියම කළ හැක;
  • proc_open() මඟින් ඔපෙරන්ඩ් ක්‍රියාත්මක කිරීමට තන්තුවකට වඩා අරාවක ලැයිස්තුගත කිරීමට ඉඩ සලසයි, තවද එය නූල් යළි-යොමුවීම් සහ ශුන්‍ය ගොනු විස්තරයක් සඳහා සහාය ද සපයයි;

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

    // shell එකේ 2>&1 වගේ
    proc_open($cmd, [1 => ['පයිප්', 'w'], 2 => ['යලි යොමු', 1]], $ පයිප්ප);

    // වැනි 2>/dev/null හෝ 2>nul in shell
    proc_open($cmd, [1 => ['පයිප්', 'w'], 2 => ['null']], $pipes);

  • Firebird/Interbase, Recode සහ WDDX දිගු මූලික බෙදාහැරීමෙන් බැහැර කර ඇත. මෙම දිගු දැන් PECL හරහා බෙදා හරිනු ලැබේ;
  • කාණ්ඩයට මාරු කර ඇත යල් පැන ගිය වරහන් නොමැතිව කූඩු ත්‍රිත්ව ක්‍රියාකරුවන්, curly braces (“$var{$idx}”) භාවිතයෙන් අරා මූලද්‍රව්‍ය සහ තන්තු වෙත ප්‍රවේශ වීම, is_real() ශ්‍රිතය සහ රියල් වෙත වාත්තු කිරීම, මාපිය පන්තියක් නොමැතිව මාපිය මූල පදය භාවිතා කිරීම, වින්‍යාසය අවසර_url_include පරාමිතිය වැනි විශේෂාංග , වස්තූන් මත array_key_exists() භාවිතා කිරීම.

    කාර්යයන් 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().

    ශ්‍රිතවල වැරදි සංකේත සැකසීමට උත්සාහ කරන විට යල් පැන ගිය විශේෂාංගයක් භාවිතා කිරීම පිළිබඳ අනතුරු ඇඟවීමක් සපයා ඇත.
    base_convert(), bindec(), octdec() සහ hexdec(), සහ mb_ereg_replace() හි නූල් නොවන රටාවක් සඳහන් කරන විට.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න