زبور 3.12 جو رليز، PHP ٻولي لاءِ جامد تجزيي ڪندڙ. PHP 8.0 جو الفا رليز

Vimeo ڪمپني شايع ٿيل جامد تجزيي جي نئين رليز زبور 3.12، جيڪو توهان کي PHP ڪوڊ ۾ واضح ۽ ذيلي غلطين جي نشاندهي ڪرڻ جي اجازت ڏئي ٿو، ۽ انهي سان گڏ خودڪار طريقي سان غلطين جي ڪجهه قسمن کي درست ڪري ٿو. سسٽم ٻنهي ورثي ڪوڊ ۽ ڪوڊ ۾ مسئلن جي نشاندهي ڪرڻ لاءِ موزون آهي جيڪي PHP جي نئين شاخن ۾ متعارف ڪرايل جديد فيچرز کي استعمال ڪن ٿا. پروجيڪٽ ڪوڊ PHP ۾ لکيل آهي ۽ طرفان ورهايل MIT لائسنس تحت.

زبور غلط قسم جي استعمال سان لاڳاپيل اڪثر مسئلن جي نشاندهي ڪري ٿو، گڏوگڏ مختلف عام غلطيون. مثال طور، اهو هڪ اظهار ۾ مختلف قسمن جي متغيرن کي گڏ ڪرڻ بابت خبردارين کي سپورٽ ڪري ٿو، غلط منطقي ٽيسٽ (جهڙوڪ "if ($a && $a) {}"، "if ($a && !$a) {}" ۽ " if ($a) {} elseif ($a) {}")، اعتراض جي ملڪيت جي نامڪمل شروعات. تجزيه ڪندڙ گھڻن موضوعن واري موڊ ۾ هلندو آهي. اهو ممڪن آهي ته وڌندڙ اسڪين کي انجام ڏيو، جيڪي صرف فائلن جو تجزيو ڪن ٿيون جيڪي آخري اسڪين کان تبديل ٿي چڪا آهن.

اضافي طور تي، اجازت ڏيڻ لاء محفوظ پروگرامنگ اوزار مهيا ڪيا ويا آهن استعمال ڪريو تشريح فارميٽ ۾ ڊبل بلاڪ ("/** @var قسم */") متغير قسمن بابت معلومات مهيا ڪرڻ، واپسي جي قيمت، فنڪشن پيٽرولر، اعتراض جي ملڪيت. قسم جي استعمال جي نمونن کي بيان ڪرڻ ۽ اصرار بيانن کي استعمال ڪندي پڻ سپورٽ ڪئي وئي آهي. مثال طور:

/** @var string|null*/
$a = foo ()؛

/** @var string $a */
echo strpos ($a، 'هيلو')؛

/** @psalm-asssert-if-true B$a */
فعل isValidB(A $a): bool {
واپسي $a مثال جو B && $a->isValid()؛
}

مليل مسئلن جي خاتمي کي خودڪار ڪرڻ لاء، Psalter افاديت مهيا ڪئي وئي آهي، جيڪا پلگ ان جي مدد ڪري ٿي ۽ اها ڳالهه جي اجازت ڏئي عام ڪوڊ جي مسئلن کي حل ڪريو، قسم جي تشريح شامل ڪريو، ۽ ڦيرڦار انجام ڏيو جيئن ڪلاسز کي ھڪڙي نالي جي جڳھ کان ٻئي ڏانھن منتقل ڪرڻ، ڪلاسن جي وچ ۾ طريقن کي منتقل ڪرڻ، ۽ ڪلاس ۽ طريقن کي تبديل ڪرڻ.

زبور جي نئين مسئلي ۾ لاڳو ڪيو ويو "--taint-analysis" اختيار توهان کي صارف کان حاصل ڪيل ان پٽ پيٽرولر جي وچ ۾ لاڳاپو ڳولڻ جي اجازت ڏئي ٿو (مثال طور، $ _GET['name']) ۽ انهن هنڌن تي انهن جو استعمال جنهن ۾ ڪردار کان بچڻ جي ضرورت آهي (مثال طور، گونج" $ نالو ")، بشمول وچولي اسائنمنٽس ۽ فنڪشن ڪالن جي ٽريڪنگ زنجيرن ذريعي. associative arrays $_GET، $_POST ۽ $_COOKIE جو استعمال امڪاني طور تي خطرناڪ ڊيٽا جا ذريعا سمجهيا وڃن ٿا، پر اهو پڻ ممڪن آهي. وضاحت پنهنجا ذريعا. ڪارناما جيڪي فرار ٿيڻ واري ٽريڪنگ جي ضرورت هونديون آهن انهن ۾ آئوٽ پٽ آپريشن شامل آهن جيڪي HTML مواد ٺاهي، HTTP هيڊر شامل ڪن، يا SQL سوالن تي عمل ڪن.

تصديق استعمال ٿيندي آهي جڏهن افعال استعمال ڪندي جهڙوڪ گونج، ايگزيڪ، شامل ۽ هيڊر. جڏهن فرار ٿيڻ جي ضرورت جو تجزيو ڪيو وڃي، ڊيٽا جا قسم جهڙوڪ ٽيڪسٽ، اسٽرنگ سان SQL، HTML ۽ شيل ڪوڊ، اسٽرنگ جي تصديق جي پيٽرولن سان حساب ۾ ورتو وڃي ٿو. تجويز ڪيل موڊ توهان کي ڪوڊ ۾ ڪمزورين جي نشاندهي ڪرڻ جي اجازت ڏئي ٿو جيڪي ڪراس سائيٽ اسڪرپٽنگ (XSS) يا SQL متبادل ڏانهن ڏسن ٿا.

اضافي طور تي، اهو نوٽ ڪري سگهجي ٿو شروعات نئين PHP 8.0 برانچ جي الفا جاچ. رليز نومبر 26th تي مقرر ڪيو ويو آهي. نئين شاخ ۾ هيٺيان توقع ڪئي وئي آهي: جدتجهڙوڪ:

  • موڙجڻ JIT مرتب ڪندڙ، جنهن جو استعمال پيداوار کي بهتر بڻائيندو.
  • حمايت اتحاد جا قسم، ٻن يا وڌيڪ قسمن جا مجموعا بيان ڪرڻ (مثال طور، "عوامي فنڪشن foo(Foo|Bar $input): int|float؛").
  • حمايت خاصيتون (تشريحات) جيڪي توهان کي ميٽاڊيٽا (جهڙوڪ قسم جي معلومات) کي ڊاک بلاڪ نحو استعمال ڪرڻ کان سواءِ ڪلاسن ۾ پابند ڪرڻ جي اجازت ڏين ٿا.
  • مختصر نحو طبقاتي وصفون، توهان کي هڪ تعمير ڪندڙ ۽ ملڪيت جي تعريف کي گڏ ڪرڻ جي اجازت ڏئي ٿي.
  • نئين واپسي جو قسم - جامد.
  • نئون قسم - مليل، جيڪو استعمال ڪري سگهجي ٿو اهو طئي ڪرڻ لاءِ ته ڇا هڪ فنڪشن مختلف قسمن جا پيرا ميٽر قبول ڪري ٿو.
  • تاثر ڌوڙ استثنا کي سنڀالڻ لاء.
  • ڪمزور نقشو شيون ٺاهڻ لاءِ جيڪي ڪچرو گڏ ڪرڻ دوران قربان ڪري سگھجن ٿيون (مثال طور، غير ضروري ڪيش رکڻ لاءِ).
  • موقعو استعمال ڪندي "::ڪلاس" شين لاءِ (جنهن سان گڏ ڪال ڪرڻ get_class()).
  • موقعو استثنا جي ڪيچ بلاڪ ۾ وصفون جيڪي متغيرن جا پابند نه هجن.
  • موقعو فنڪشن پيرا ميٽرز جي لسٽ ۾ آخري عنصر کان پوء ڪاما ڇڏڻ.
  • نئون انٽرفيس ڳنڍڻ لائق ڪنهن به اسٽرنگ جي قسم يا ڊيٽا کي سڃاڻڻ لاءِ جنهن کي اسٽرنگ ۾ تبديل ڪري سگهجي ٿو (جنهن لاءِ __toString() طريقو موجود آهي).
  • نئين خاصيت str_contains(), ذيلي اسٽرنگ جي موجودگي کي طئي ڪرڻ لاءِ strpos جو هڪ آسان اينالاگ، انهي سان گڏ فعل str_starts_with() ۽ str_ends_with() هڪ اسٽرنگ جي شروعات ۽ آخر ۾ ميچن کي جانچڻ لاءِ.
  • شامل ڪيل فنڪشن fdiv()، جيڪو صفر سان ورهائڻ دوران غلطي اڇلائڻ کان سواءِ ڊويزن آپريشن ڪندو آهي.
  • تبديل ٿيل string joining logic. مثال طور، اظهار 'گونج: مجموعو:' . $a + $b' اڳ ۾ 'echo ("sum: " . $a) + $b' جي طور تي تشريح ڪئي وئي هئي، ۽ PHP 8 ۾ "echo" sum: " سمجھيو ويندو. ($a + $b)'.
  • تنگ ٿيل انگن اکرن ۽ بٽ آپريشنز کي چيڪ ڪرڻ، مثال طور، "[] % [42]" ۽ "$object + 4" جي اشارن جي نتيجي ۾ غلطي ٿيندي.
  • لاڳو ٿيل هڪ مستحڪم ترتيب ڏيڻ وارو الگورٿم جنهن ۾ هڪجهڙائي جي ترتيب کي مختلف رنن ۾ محفوظ ڪيو ويندو آهي.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو