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

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

PHP 8.2 හි ප්‍රධාන වැඩිදියුණු කිරීම්:

  • පන්තියක් කියවීමට පමණක් ලෙස සලකුණු කිරීමේ හැකියාව එක් කරන ලදී. එවැනි පන්තිවල දේපල එක් වරක් පමණක් සැකසිය හැකි අතර, පසුව ඒවා වෙනස් කළ නොහැක. මීට පෙර, තනි පන්ති ගුණාංග කියවීමට පමණක් සලකුණු කළ හැකි නමුත් දැන් ඔබට මෙම මාදිලිය සියලුම පන්ති ගුණාංග සඳහා එකවර සක්‍රීය කළ හැක. පන්ති මට්ටමින් "කියවීමට පමණක්" ධජය සඳහන් කිරීම මගින් පන්තියට ගතිකව එකතු කිරීමෙන් ගුණාංග අවහිර කරයි. කියවීමට පමණක් පන්තියේ Post { public function __construct( public string $title, public Author $author, ) {}} $post = new Post(/* … */); $post->නොදන්නා = 'වැරදි'; // දෝෂය: ගතික දේපල නිර්මාණය කළ නොහැක Post::$නොදන්නා
  • එක් වලංගු අගයක් පමණක් ගත හැකි "සත්‍ය", "අසත්‍ය" සහ "ශුන්‍ය" යන වෙනම වර්ග එකතු කරන ලද අතර, උදාහරණයක් ලෙස, දෝෂ අවසන් කිරීමේ ධජයක් හෝ හිස් අගයක් සහිත ශ්‍රිතයක් ආපසු ලබා දීමට භාවිතා කරයි. මීට පෙර, "සත්‍ය", "අසත්‍ය" සහ "ශුන්‍ය" වෙනත් වර්ග සමඟ පමණක් භාවිතා කළ හැකි විය (උදාහරණයක් ලෙස, "string|false"), නමුත් දැන් ඒවා වෙන වෙනම භාවිතා කළ හැක: function alwaysFalse(): false { return false ; }
  • දෝෂයක් අතරතුර ස්ටැක් ට්‍රේස් ප්‍රතිදානයේ සංවේදී පරාමිති පෙරීමට හැකියාව සපයයි. සිදුවන දෝෂ පිළිබඳ තොරතුරු ස්වයංක්‍රීයව තෙවන පාර්ශ්ව සේවාවන් වෙත යවන විට ගැටළු නිරීක්ෂණය කර ඒවා පිළිබඳව සංවර්ධකයන්ට දැනුම් දෙන විට ඇතැම් තොරතුරු කපා හැරීම අවශ්‍ය විය හැකිය. උදාහරණයක් ලෙස, ඔබට ලුහුබැඳීමෙන් පරිශීලක නාම, මුරපද සහ පරිසර විචල්‍ය ඇතුළත් පරාමිති බැහැර කළ හැක. ශ්‍රිත පරීක්ෂණය ($foo, #[\SensitiveParameter] $password, $baz ) { නව ව්‍යතිරේකය ('දෝෂය'); } පරීක්ෂණය ('foo', 'මුරපදය', 'baz'); මාරාන්තික දෝෂය: අල්ලා නොගත් ව්‍යතිරේකය: test.php හි දෝෂය: 8 තොග හෝඩුවාව: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} test.php හි දමන ලදී 8 පේළියේ
  • ගතිලක්ෂණවල නියතයන් නිර්වචනය කිරීමට අවසර ඇත (ලක්ෂණ, කේතය නැවත භාවිතා කිරීම සඳහා යාන්ත්රණයක්). ලක්ෂණයක නිර්වචනය කර ඇති නියතයන් ගති ලක්ෂණය භාවිතා කරන පන්තිය හරහා ප්‍රවේශ විය හැකිය (නමුත් ලක්ෂණ නාමය හරහා නොවේ). ලක්ෂණය Foo { public const CONSTANT = 1; පොදු කාර්ය තීරුව (): int { return self :: CONSTANT; // මාරක දෝෂය }} පන්ති තීරුව {foo භාවිතා කරන්න; } var_dump(Bar:: CONSTANT); // 1
  • විසංයෝජන සාමාන්‍ය ස්වරූපයෙන් (DNF, Disjunctive Normal Form) වර්ග නියම කිරීමේ හැකියාව එක් කරන ලද අතර එමඟින් ඔබට වර්ග (වර්ග දෙකක හෝ වැඩි ගණනක එකතු කිරීම්) සහ වර්ගවල ඡේදනය (අගයන් කිහිපයක් යටතේ වැටෙන වර්ග) ඒකාබද්ධ කිරීමට ඉඩ සලසයි. එකවර වර්ග). class Foo { public function bar((A&B)|null $entity) { if ($entity === null) { return null; } ආපසු $entity; } }
  • ව්‍යාජ සසම්භාවී සංඛ්‍යා සහ අනුක්‍රම උත්පාදනය කිරීම සඳහා ශ්‍රිත සහ පන්ති සමඟ "සසම්භාවී" නව දිගුවක් යෝජනා කර ඇත. මොඩියුලය වස්තු-නැඹුරු අතුරුමුහුණතක් සපයයි, ගුප්තකේතන විද්‍යාවේ භාවිතයට සුදුසු ඒවා ඇතුළුව ව්‍යාජ අහඹු සංඛ්‍යා ජනනය කිරීම සඳහා විවිධ එන්ජින් තෝරා ගැනීමට ඔබට ඉඩ සලසයි, සහ සහායක කාර්යයන් සපයයි, උදාහරණයක් ලෙස, අහඹු ලෙස අරා සහ නූල් මිශ්‍ර කිරීම, අහඹු අරා යතුරු තේරීම, ඔබේම ස්වාධීන රාජ්‍යයක් සහිත ජනක යන්ත්‍ර කිහිපයක් එකවර භාවිතා කිරීම. $rng = $is_production ? නව සසම්භාවී\Engine\Secure() : නව සසම්භාවී\Engine\Mt19937(1234); $randomizer = නව Random\Randomizer($rng); $randomizer->shuffleString('foobar');
  • ක්‍රියාත්මක කරන ලද ස්ථාන-ස්වාධීන සිද්ධි පරිවර්තනය. strtolower() සහ strtoupper() වැනි ශ්‍රිත දැන් සෑම විටම ASCII පරාසයේ ඇති අක්ෂර "C" පෙදෙසියට සකසා ඇති ආකාරයට පරිවර්තනය කරයි.
  • නව කාර්යයන් එකතු කරන ලදි: mysqli_execute_query, curl_upkeep, memory_reset_peak_usage, ini_parse_quantity, libxml_get_external_entity_loader, sodium_crypto_stream_xchacha20_xor_ic, openssl_cipher_length.key.
  • නව ක්‍රම එකතු කරන ලදි: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • පන්තියක ගුණාංග ගතිකව නිර්මාණය කිරීමේ හැකියාව අවලංගු කර ඇත. PHP 9.0 හි, පන්තියේ මුලින් නිර්වචනය නොකළ ගුණාංග වෙත ප්‍රවේශ වීම දෝෂයක් ඇති කරයි (ErrorException). ගුණාංග නිර්මාණය කිරීම සඳහා __get සහ __set ක්‍රම සපයන පන්ති, හෝ stdClass හි ගතික ගුණාංග වෙනස්කම් නොමැතිව දිගටම ක්‍රියා කරනු ඇත, සැඟවුණු දෝෂ වලින් සංවර්ධකයා ආරක්ෂා කිරීමට සහාය නොදක්වන්නේ නොපවතින ගුණාංග සහිත ව්‍යංග වැඩ පමණි. පැරණි කේතයේ කාර්යය සුරැකීමට, ගතික ගුණාංග භාවිතා කිරීමට ඉඩ සලසමින්, "#[AllowDynamicProperties]" ගුණාංගය යෝජනා කෙරේ.
  • "${var}" සහ ${(var)} යන ප්‍රකාශන භාවිතා කරමින් විචල්‍ය අගයන් තන්තු වලට ආදේශ කිරීමේ හැකියාව අත්හැර ඇත. බහුලව භාවිතා වන "{$var}" සහ "$var" ආදේශන සඳහා සහය රඳවා ඇත. උදාහරණයක් ලෙස: "Hello {$world}"; හරි "Hello $world"; හරි "Hello ${world}"; අත්හරින ලදී: තන්තු වලින් ${} භාවිතා කිරීම අත්හරිනු ලැබේ
  • "call_user_func($callable)" හරහා ඇමතීමට හැකි නමුත් "$callable()": "self:: method" "parent:: method" "static" :: method වලින් ඇමතීමට සහාය නොදක්වන අර්ධ වශයෙන් සහය දක්වන ඇමතුම් අත්හරින ලදී " ["ස්වයං", "ක්‍රමය"] ["මාපිය", "ක්‍රමය"] ["ස්ථිතික", "ක්‍රමය"] ["ෆූ", "බාර්:: ක්‍රමය"] [නව ෆූ, "බාර්:: ක්‍රමය" ]
  • error_log_mode විධානය සැකසීම් වෙත එක් කර ඇති අතර, දෝෂ ලොගයට ප්‍රවේශ මාදිලිය තීරණය කිරීමට ඔබට ඉඩ සලසයි.

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

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