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

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

PHP 8.3 හි ප්රධාන වෙනස්කම්:

  • පන්තියේ ක්ලෝනකරණය අතරතුර, "කියවීමට පමණක්" ගුණාංගය සමඟ ගුණාංග නැවත ආරම්භ කළ හැකිය. "__clone" ශ්‍රිතය තුළ පමණක් කියවීමට පමණක් ගුණ අභිබවා යාමට ඉඩ දෙනු ලැබේ: කියවීමට පමණක් පන්තියේ Post { public function __construct( public DateTime $createdAt, ) {} public function __clone() {$this->createdAt = new DateTime(); // "createdAt" දේපල කියවීමට පමණක් වුවද අවසර ඇත. } }
  • පන්ති, ගතිලක්ෂණ සහ ගණන් කිරීමේදී වර්ග ඇඟවීම් සහිත නියතයන් භාවිතා කිරීමේ හැකියාව සපයා ඇත: class Foo {const string BAR = 'baz'; }
  • "#[Override]" උපලක්ෂණය සඳහා සහය එක් කරන ලද අතර, සංවර්ධකයාට සලකුණු කළ ක්‍රමය සමහර මාපිය ක්‍රම අභිබවා යන බව පරිවර්තකයාට දැනුම් දිය හැක. අභිබවා යාමක් නොමැති නම්, පරිවර්තකයා දෝෂයක් පෙන්වයි.
  • අරා දර්ශකයක් ලෙස සෘණ අගයන් හැසිරවීම වෙනස් කරන ලදී. උදාහරණයක් ලෙස, හිස් අරාවකට “-5” අංකයක් සහිත මූලද්‍රව්‍යයක් එකතු කරන විට සහ වෙනත් මූලද්‍රව්‍යයක් එකතු කරන විට, කලින් දෙවන මූලද්‍රව්‍යය “0” දර්ශකය සමඟ සුරකින ලදි, නමුත් PHP 8.3 අනුවාදයෙන් ආරම්භ වී එය “-4” දර්ශකයෙන් සුරකිනු ඇත. . $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // අරාව විය (-5 => 'a', 0 => 'b') // අරාව බවට පත් විය (-5 => 'a', -4 => 'b')
  • කියවීමට පමණක් ප්‍රකාරයේදී නිර්නාමික පන්ති නිර්මාණය කිරීමේ හැකියාව එක් කරන ලදී: $class = නව කියවීමට පමණක් පන්තිය { public function __construct( public string $foo = 'bar', ) {}};
  • විකේතනය කිරීමේ මෙහෙයුම් සිදු නොකර තන්තුවක් JSON ආකෘතියෙන් තිබේදැයි ඉක්මනින් පරීක්ෂා කිරීමට json_validate() ශ්‍රිතය එක් කරන ලදී. json_validate(string $json, int $depth = 512, int $flags = 0): bool
  • Randomizer පන්තියට නව ක්‍රම එකතු කර ඇත, එය ව්‍යාජ අහඹු සංඛ්‍යා සහ අනුපිළිවෙලවල් ජනනය කිරීම සඳහා ඉහළ මට්ටමේ API සපයයි: වෙනත් තන්තුවක ඇති අක්ෂර අහඹු ලෙස අනුපිළිවෙලින් භාවිතා කරමින් දී ඇති ප්‍රමාණයේ තන්තුවක් ජනනය කිරීම සඳහා getBytesFromString; නිශ්චිත පරාසය තුළට වැටෙන අහඹු පාවෙන ලක්ෂ්‍ය අංකයක් ජනනය කිරීමට getFloat සහ nextFloat.
  • ගතික පන්ති වාක්‍ය ඛණ්ඩය භාවිතයෙන් නියතයන් ලබා ගැනීමේ හැකියාව එක් කරන ලදී: class Foo {const BAR = 'bar'; } $name = 'BAR'; // මීට පෙර, BAR නියතය ලබා ගැනීමට, ඔබට නියත ඇමතීමට සිදු විය(Foo::class . '::' . $name); // දැන් Foo සඳහන් කරන්න::{$name};
  • දින සහ වේලාව සමඟ ක්‍රියා කිරීමේදී ඇතිවන ගැටළු වලදී තනි ව්‍යතිරේක උත්පාදනය (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) එකතු කරන ලදී.
  • Unserialize() ශ්‍රිතයේ අනුක්‍රමික දත්ත විග්‍රහ කිරීමේදී සිදුවන දෝෂ හැසිරවීම වැඩිදියුණු කිරීම. ගැටළු ඇති වුවහොත්, Unserialize() දැන් E_NOTICE වෙනුවට E_WARNING නිකුත් කරයි.
  • පරාසය() ශ්‍රිතයට වෙනස්කම් සිදු කර ඇත. පරාසයේ මායිම් නිර්වචනය කරන විචල්‍යයන් තුළ වස්තු, සම්පත් හෝ අරා යැවීමට උත්සාහ කිරීමේදී මෙන්ම $step පරාමිතිය තුළ සෘණ අගයක් හෝ කිසියම් පරාමිතියක නිර්වචනය නොකළ අගයක් නියම කිරීමේදී ව්‍යතිරේකයක් ජනනය වේ. අංක වෙනුවට තන්තු නියම කිරීමේදී අක්ෂර ලැයිස්තුවක් දැන් ප්‍රතිදානය කළ හැක (උදාහරණයක් ලෙස, "පරාසය('5', 'z')").
  • දැන් මාපිය පන්තියෙන් උරුම වූ ස්ථිතික ගුණාංග අභිබවා යන ස්ථිතික ගුණ සහිත ගතිලක්ෂණවල හැසිරීම වෙනස් කරන ලදී.
  • තොග පිටාර ගැලීමේ ආරක්ෂාව සඳහා සැකසුම් එකතු කරන ලදී. Zend.max_allowed_stack_size සහ zend.reserved_stack_size විධාන ini ගොනුවට එක් කර ඇත, උපරිම අවසර ලත් සහ වෙන් කළ තොග ප්‍රමාණය නිර්වචනය කරයි. zend.max_allowed_stack_size සහ zend.reserved_stack_size අතර වෙනසට වඩා තොගය පිරී ඇති විට, අට්ටි වෙහෙසට ළඟා වන විට වැඩසටහන බිඳ වැටෙනු ඇත (ඛණ්ඩනය කිරීමේ දෝෂයක් ඇති වීමට පෙර ක්‍රියාත්මක කිරීම නතර වනු ඇත). පෙරනිමියෙන්, zend.max_allowed_stack_size අගය 0 ලෙස සකසා ඇත (0—ප්‍රමාණය ස්වයංක්‍රීයව තීරණය වේ; සීමාව අක්‍රිය කිරීමට, ඔබට එය -1 ලෙස සැකසිය හැක).
  • නව POSIX ශ්‍රිතයන් posix_sysconf(), posix_pathconf(), posix_fpathconf() සහ posix_eaccess() එකතු කරන ලදී.
  • MB_str_pad ශ්‍රිතය එක් කර ඇත, එය str_pad() string ශ්‍රිතයේ ප්‍රතිසමයක් වන අතර, UTF-8 වැනි බහු-බයිට් කේතීකරණ සමඟ ක්‍රියා කිරීමට නිර්මාණය කර ඇත.
  • ක්‍රම වලින් වසා දැමීම් සෑදීමට සහ එම වසා දැමීම් වෙත නම් කරන ලද තර්ක ලබා දීමට ඔබට ඉඩ සලසයි. $test = නව පරීක්ෂණය(); $closure = $test->මැජික්(...); $closure(a: 'hello', b: 'world');
  • අතුරුමුහුණත්වල නියතයන්ගේ දෘශ්‍යතාව හසුරුවන විට වෙනස් වූ හැසිරීම. අතුරු මුහුණත I { public const FOO = 'foo'; } පන්තියේ C I {private const FOO = 'foo' ක්‍රියාත්මක කරයි; }
  • array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() සහ proc_get_status() ශ්‍රිතවල හැකියාවන් පුළුල් කර ඇත.
  • සෘණ $widths අගයක් mb_strimwidth() වෙත යැවීමේ හැකියාව අවලංගු කර ඇත. NumberFormatter::TYPE_CURRENCY නියතය ඉවත් කර ඇත. $host සහ $port යන පරාමිති දෙකක් සහිත ldap_connect() ශ්‍රිතය ඇමතීම සඳහා වන සහාය අත්හිටුවා ඇත. opcache.consistency_checks සැකසීම ඉවත් කර ඇත.

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

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