د پی ایچ پی 8.2 پروګرام کولو ژبه خپرول

د یو کال پراختیا وروسته، د PHP 8.2 پروګرام کولو ژبه خوشې شوه. په نوې څانګه کې یو لړ نوي ځانګړتیاوې شاملې دي، په بیله بیا یو شمیر بدلونونه چې مطابقت ماتوي.

په PHP 8.2 کې کلیدي پرمختګونه:

  • یوازې د لوستلو په توګه د ټولګي نښه کولو وړتیا اضافه کړه. په داسې ټولګیو کې ملکیتونه یوازې یو ځل ټاکل کیدی شي، وروسته له دې چې دوی نشي بدلیدلی. پخوا، د انفرادي ټولګي ملکیتونه یوازې د لوستلو لپاره نښه کیدل، مګر اوس تاسو کولی شئ دا حالت په یوځل کې د ټولو ټولګي ملکیتونو لپاره فعال کړئ. د ټولګي په کچه د "یوازې لوستلو" بیرغ مشخص کول هم په ټولګي کې په متحرک ډول اضافه کیدو څخه ملکیتونه بندوي. د لوستلو یوازې ټولګي پوسټ { عامه فعالیت __ ساختمان ( عامه سټرینګ $ عنوان، عامه لیکوال $ لیکوال، ) {} } $ پوسټ = نوی پوسټ(/* … */); $post->نامعلوم = 'غلط'؛ // تېروتنه: متحرک ملکیت نشي جوړولی پوسټ::$ نامعلوم
  • جلا جلا ډولونه "ریښتیا"، "غلط" او "نول" اضافه شوي، کوم چې یوازې یو باوري ارزښت لري او کارول کیږي، د بیلګې په توګه، د غلطۍ ختمولو بیرغ یا خالي ارزښت سره د فنکشن بیرته راستنیدو لپاره. پخوا، "ریښتیا"، "غلط" او "نال" یوازې د نورو ډولونو سره په ترکیب کې کارول کیدی شي (د مثال په توګه، "سټرینګ| غلط")، مګر اوس دوی په جلا توګه کارول کیدی شي: فعل تل غلط (): غلط { بیرته غلط ; }
  • د یوې خطا په جریان کې د سټیک ټریس محصول کې د حساس پیرامیټرو فلټر کولو وړتیا چمتو کوي. د ځینې معلوماتو قطع کول ممکن اړین وي کله چې د غلطیو په اړه معلومات چې پیښیږي په اوتومات ډول د دریمې ډلې خدماتو ته لیږل کیږي چې ستونزې تعقیبوي او پراختیا کونکو ته یې خبر ورکوي. د مثال په توګه ، تاسو کولی شئ هغه پیرامیټونه خارج کړئ چې پکې د کارونکي نومونه ، پاسورډونه او د چاپیریال متغیرونه د تعقیب څخه شامل دي. د فعالیت ازموینه ($foo, #[\SensitiveParameter] $password, $baz ) { نوی استثنا ('Error') وغورځوئ؛ } test('foo'، 'پټون'، 'باز')؛ وژونکې تېروتنه: ناڅرګنده استثنا: په test.php کې تېروتنه: 8 د سټیک ټریس: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} په test.php کې اچول شوی په 8 کرښه
  • په ځانګړتیاو کې د ثابت تعریف کولو اجازه ورکړل شوې (خصوصیت، د کوډ د بیا کارولو میکانیزم). په یو خاصیت کې تعریف شوي ثابتونکي د ټولګي له لارې لاسرسی کیدی شي چې ځانګړتیا کاروي (مګر د ځانګړتیا نوم له لارې نه). ځانګړنه فو { عامه کانسټ CONSTANT = 1; د عامه فعالیت بار // وژونکې تېروتنه } } ټولګي بار { Foo وکاروئ؛ } var_dump(بار::CONSTANT); // 1
  • په غیر منقول نورمال شکل کې د ډولونو مشخص کولو وړتیا اضافه کړه (DNF ، غیر منقول نورمال فورمه) ، کوم چې تاسو ته اجازه درکوي د ډولونو اتحادیه (د دوه یا ډیرو ډولونو راټولول) او د ډولونو تقاطع (ډولونه چې ارزښتونه یې د څو لاندې راځي. په ورته وخت کې ډولونه). کلاس Foo { عامه فنکشن بار((A&B)|null $entity) { که ($entity === null) { بیرته ستنیدنه; } بیرته راستنیدنه $entity; } }
  • یو نوی تمدید "تصادفي" د سیډو - تصادفي شمیرو او ترتیبونو رامینځته کولو لپاره د دندو او ټولګیو سره وړاندیز شوی. موډل د اعتراض پر بنسټ انٹرفیس چمتو کوي، تاسو ته اجازه درکوي د سیوډو تصادفي شمیرو رامینځته کولو لپاره مختلف انجنونه غوره کړئ ، پشمول هغه چې په کریپټوګرافي کې د کارولو لپاره مناسب دي ، او مرستندویه دندې چمتو کوي ، د مثال په توګه ، په تصادفي ډول د صفونو او تارونو مخلوط کولو لپاره ، د تصادفي سرې کیلي غوره کول ، ستاسو د خپل خپلواک دولت سره د څو جنراتورونو په یو وخت کې کارول. $rng = $is_production؟ نوی تصادفي انجن \ خوندي () : نوی تصادفي انجن \ 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_key_length.
  • نوي میتودونه اضافه کړل: 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" بدیلونو لپاره ملاتړ ساتل شوی. د مثال په توګه: "سلام {$world}"; سمه ده "سلام $world"؛ سمه ده "سلام ${world}"; تخریب شوی: په تارونو کې د ${} کارول رد شوي
  • په جزوي ډول ملاتړ شوي زنګونه رد شوي چې د "call_user_func($callable)" له لارې ویل کیدی شي مګر د "$callable()" په بڼه د زنګ وهلو ملاتړ نه کوي: "self::method" "parent::method" "static" ::method " ["ځان"، "طريقه"] ["پلار"، "طريقه"] ["جامد"، "طريقه"] ["فو"، "بار:: ميتود"] [نوی فو، "بار:: میتود" ]
  • د error_log_mode لارښود په ترتیباتو کې اضافه شوی ، تاسو ته اجازه درکوي د خطا لاګ ته د لاسرسي حالت وټاکئ.

سرچینه: opennet.ru

Add a comment