د PHP 8.2 الفا ازموینه پیل شوې

د PHP 8.2 پروګرام کولو ژبې د نوې څانګې لومړۍ الفا خوشې کول وړاندې شوي. خوشې کول د نومبر په 24 ټاکل شوي. اصلي نوښتونه چې دمخه د ازموینې لپاره شتون لري یا په PHP 8.2 کې د پلي کولو لپاره پلان شوي:

  • جلا جلا ډولونه "غلط" او "نال" اضافه شوي، کوم چې کارول کیدی شي، د بیلګې په توګه، د یوې فنکشن لپاره چې د تېروتنې پای ته رسیدو بیرغ یا خالي ارزښت بیرته راولي. پخوا، "غلط" او "نال" یوازې د نورو ډولونو سره په ګډه کارول کیده (د مثال په توګه، "سټرینګ| غلط")، مګر اوس دوی په جلا توګه کارول کیدی شي: فعل تل فالس(): غلط { بیرته راستنیدنه غلط؛ }
  • یوازې د لوستلو په توګه د ټولګي نښه کولو وړتیا اضافه کړه. په داسې ټولګیو کې ملکیتونه یوازې یو ځل ټاکل کیدی شي، وروسته له دې چې دوی نشي بدلیدلی. پخوا، د انفرادي ټولګي ملکیتونه یوازې د لوستلو لپاره نښه کیدل، مګر اوس تاسو کولی شئ دا حالت په یوځل کې د ټولو ټولګي ملکیتونو لپاره فعال کړئ. د ټولګي په کچه د "یوازې لوستلو" بیرغ مشخص کول هم په ټولګي کې په متحرک ډول اضافه کیدو څخه ملکیتونه بندوي. د لوستلو یوازې ټولګي پوسټ { عامه فعالیت __ ساختمان ( عامه سټرینګ $ عنوان، عامه لیکوال $ لیکوال، ) {} } $ پوسټ = نوی پوسټ(/* … */); $post->نامعلوم = 'غلط'؛ // تېروتنه: متحرک ملکیت نشي جوړولی پوسټ::$ نامعلوم
  • په ټولګي کې په متحرک ډول د ملکیتونو رامینځته کولو وړتیا (لکه په پورتنۍ مثال کې "پوسټ> نامعلوم") له مینځه وړل شوی. په PHP 9.0 کې، د ملکیتونو ته لاسرسی چې په پیل کې په ټولګي کې ندي تعریف شوي د یوې تېروتنې پایله به وي (ErrorException). ټولګي چې د ملکیتونو رامینځته کولو لپاره __get او __set میتودونه چمتو کوي ، یا په stdClass کې متحرک ملکیتونه به پرته له بدلونونو کار کولو ته دوام ورکړي ، یوازې د غیر موجود ملکیتونو سره ضمني کار به ملاتړ شي ترڅو پراختیا کونکي د پټو کیګونو څخه خوندي کړي. د زاړه کوډ د کار ساتلو لپاره، د "#[AllowDynamicProperties]" خاصیت وړاندیز شوی، د متحرک ملکیتونو کارولو ته اجازه ورکوي.
  • د یوې خطا په جریان کې د سټیک ټریس محصول کې د حساس پیرامیټرو فلټر کولو وړتیا چمتو کوي. د ځینې معلوماتو قطع کول ممکن اړین وي کله چې د غلطیو په اړه معلومات چې پیښیږي په اوتومات ډول د دریمې ډلې خدماتو ته لیږل کیږي چې ستونزې تعقیبوي او پراختیا کونکو ته یې خبر ورکوي. د مثال په توګه ، تاسو کولی شئ هغه پیرامیټونه خارج کړئ چې پکې د کارونکي نومونه ، پاسورډونه او د چاپیریال متغیرونه د تعقیب څخه شامل دي. د فعالیت ازموینه ($foo, #[\SensitiveParameter] $password, $baz ) { نوی استثنا ('Error') وغورځوئ؛ } test('foo'، 'پټون'، 'باز')؛ وژونکې تېروتنه: ناڅرګنده استثنا: په test.php کې تېروتنه: 8 د سټیک ټریس: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} په test.php کې اچول شوی په 8 کرښه
  • د "${var}" او ${(var)} په کارولو سره په تارونو کې د متغیر ارزښتونو ځای په ځای کولو وړتیا له مینځه وړل شوې. د عام استعمال شوي "{$var}" او "$var" بدیلونو لپاره ملاتړ ساتل شوی. د مثال په توګه: "سلام {$world}"; سمه ده "سلام $world"؛ سمه ده "سلام ${world}"; تخریب شوی: په تارونو کې د ${} کارول رد شوي
  • په جزوي ډول ملاتړ شوي زنګونه رد شوي چې د "call_user_func($callable)" له لارې ویل کیدی شي مګر د "$callable()" په بڼه د زنګ وهلو ملاتړ نه کوي: "self::method" "parent::method" "static" ::method " ["ځان"، "طريقه"] ["پلار"، "طريقه"] ["جامد"، "طريقه"] ["فو"، "بار:: ميتود"] [نوی فو، "بار:: میتود" ]
  • د سیمه ایز خپلواک قضیې تبادله پلي شوې. افعال لکه strtolower() او strtoupper() اوس تل د ASCII رینج کې د کرکټرونو قضیه بدلوي لکه څنګه چې د "C" ځای ته ټاکل شوي وي.

سرچینه: opennet.ru

Add a comment