زبور 3.12 کی ریلیز، پی ایچ پی زبان کے لیے ایک جامد تجزیہ کار۔ پی ایچ پی 8.0 کی الفا ریلیز

ویمیو کمپنی опубликовала جامد تجزیہ کار کی نئی ریلیز زبور 3.12، جو آپ کو پی ایچ پی کوڈ میں واضح اور لطیف دونوں غلطیوں کی نشاندہی کرنے کے ساتھ ساتھ کچھ قسم کی غلطیوں کو خود بخود درست کرنے کی اجازت دیتا ہے۔ یہ سسٹم لیگیسی کوڈ اور کوڈ دونوں میں مسائل کی نشاندہی کرنے کے لیے موزوں ہے جو پی ایچ پی کی نئی شاخوں میں متعارف کردہ جدید خصوصیات کو استعمال کرتا ہے۔ پروجیکٹ کوڈ پی ایچ پی اور میں لکھا گیا ہے۔ نے بانٹا MIT لائسنس کے تحت.

زبور غلط قسم کے استعمال کے ساتھ ساتھ مختلف مسائل سے وابستہ زیادہ تر مسائل کی نشاندہی کرتا ہے۔ عام غلطیاں. مثال کے طور پر، یہ ایک اظہار میں مختلف اقسام کے متغیرات کو ملانے کے بارے میں انتباہات کی حمایت کرتا ہے، غلط منطقی ٹیسٹ (جیسے "if ($a && $a) {}"، "if ($a && !$a) {}" اور " if ($a) {} elseif ($a) {}")، آبجیکٹ کی خصوصیات کا نامکمل آغاز۔ تجزیہ کار ملٹی تھریڈڈ موڈ میں چلتا ہے۔ اضافی اسکین کرنا ممکن ہے، جو صرف ان فائلوں کا تجزیہ کرتا ہے جو آخری اسکین کے بعد تبدیل ہوئی ہیں۔

مزید برآں، اجازت دینے کے لیے محفوظ پروگرامنگ ٹولز فراہم کیے گئے ہیں۔ استعمال کریں فارمیٹ میں تشریحات ڈاک بلاک ("/** @var قسم */") متغیر کی اقسام، واپسی کی قدروں، فنکشن پیرامیٹرز، آبجیکٹ کی خصوصیات کے بارے میں معلومات فراہم کرنے کے لیے۔ قسم کے استعمال کے نمونوں کی وضاحت اور اصرار بیانات کا استعمال بھی معاون ہے۔ مثال کے طور پر:

/** @var سٹرنگ|null*/
$a = foo()؛

/** @var سٹرنگ $a */
echo strpos ($a، 'ہیلو')؛

/** @psalm-asssert-if-true B$a */
فنکشن isValidB(A $a): bool {
واپس کریں $a مثال of B && $a->isValid();
}

پائے جانے والے مسائل کو خود کار طریقے سے ختم کرنے کے لیے، Psalter یوٹیلیٹی فراہم کی گئی ہے، جو پلگ انز کو سپورٹ کرتی ہے اور کی اجازت دیتا ہے عام کوڈ کے مسائل کا ازالہ کریں، قسم کی تشریحات شامل کریں، اور ہیرا پھیری کریں جیسے کہ کلاسوں کو ایک نام کی جگہ سے دوسری جگہ منتقل کرنا، کلاسوں کے درمیان طریقوں کو منتقل کرنا، اور کلاسوں اور طریقوں کا نام تبدیل کرنا۔

زبور کے نئے شمارے میں لاگو کیا "--taint-analysis" آپشن آپ کو صارف سے موصول ہونے والے ان پٹ پیرامیٹرز (مثال کے طور پر $_GET['name']) اور ان جگہوں پر ان کے استعمال کے درمیان تعلق کا پتہ لگانے کی اجازت دیتا ہے جن میں کردار سے فرار کی ضرورت ہوتی ہے (مثال کے طور پر، echo" $نام ")، بشمول انٹرمیڈیٹ اسائنمنٹس اور فنکشن کالز کی ٹریکنگ چینز کے ذریعے۔ ایسوسی ایٹیو صفوں کا استعمال $_GET، $_POST اور $_COOKIE کو ممکنہ طور پر خطرناک ڈیٹا کے ذرائع کے طور پر سمجھا جاتا ہے، لیکن یہ ممکن بھی ہے۔ تعریف اپنے ذرائع. ایسی کارروائیاں جن کے لیے فرار سے باخبر رہنے کی ضرورت ہوتی ہے ان میں آؤٹ پٹ آپریشنز شامل ہوتے ہیں جو HTML مواد تیار کرتے ہیں، HTTP ہیڈر شامل کرتے ہیں، یا SQL استفسارات کو انجام دیتے ہیں۔

ایکو، ایگزیک، شامل اور ہیڈر جیسے فنکشنز کا استعمال کرتے وقت توثیق کا استعمال کیا جاتا ہے۔ فرار ہونے کی ضرورت کا تجزیہ کرتے وقت، ڈیٹا کی اقسام جیسے کہ ٹیکسٹ، ایس کیو ایل کے ساتھ سٹرنگ، ایچ ٹی ایم ایل اور شیل کوڈ، توثیق کے پیرامیٹرز کے ساتھ سٹرنگز کو مدنظر رکھا جاتا ہے۔ مجوزہ موڈ آپ کو کوڈ میں کمزوریوں کی نشاندہی کرنے کی اجازت دیتا ہے جو کراس سائٹ اسکرپٹنگ (XSS) یا SQL متبادل کا باعث بنتے ہیں۔

اس کے علاوہ، آپ نوٹ کر سکتے ہیں آغاز نئی پی ایچ پی 8.0 برانچ کی الفا ٹیسٹنگ۔ ریلیز 26 نومبر کو ہونے والی ہے۔ نئی شاخ میں درج ذیل کی توقع ہے: بدعاتجیسے:

  • شمولیت جے آئی ٹی مرتب کرنے والاجس کے استعمال سے پیداواری صلاحیت میں بہتری آئے گی۔
  • معاونت یونین کی اقسام، دو یا زیادہ اقسام کے مجموعوں کی وضاحت کرنا (مثال کے طور پر، "عوامی فنکشن foo(Foo|Bar $input): int|float;")۔
  • معاونت صفات (تشریحات) جو آپ کو Docblock نحو کا استعمال کیے بغیر میٹا ڈیٹا (جیسے قسم کی معلومات) کو کلاسوں میں باندھنے کی اجازت دیتے ہیں۔
  • مختصر نحو کلاس کی تعریفیں، آپ کو کنسٹرکٹر اور خصوصیات کی تعریف کو یکجا کرنے کی اجازت دیتی ہے۔
  • واپسی کی نئی قسم - مستحکم.
  • نئی قسم - مخلوط، جس کا استعمال اس بات کا تعین کرنے کے لیے کیا جا سکتا ہے کہ آیا کوئی فنکشن مختلف اقسام کے پیرامیٹرز کو قبول کرتا ہے۔
  • اظہار پھینک مستثنیات کو سنبھالنے کے لئے.
  • کمزور نقشہ ایسی چیزیں بنانا جو کوڑا اٹھانے کے دوران قربان کی جا سکتی ہیں (مثال کے طور پر، غیر ضروری کیچز کو ذخیرہ کرنے کے لیے)۔
  • موقع اشیاء کے لیے اظہار "::class" کا استعمال کرتے ہوئے (کال کرنے کے مشابہ get_class())۔
  • موقع مستثنیات کے کیچ بلاک میں تعریفیں جو متغیرات کے پابند نہیں ہیں۔
  • موقع فنکشن پیرامیٹرز کی فہرست میں آخری عنصر کے بعد کوما چھوڑنا۔
  • نیا انٹرفیس سٹرنگ ایبل کسی بھی سٹرنگ کی اقسام یا ڈیٹا کی شناخت کرنے کے لیے جسے سٹرنگ میں تبدیل کیا جا سکتا ہے (جس کے لیے __toString() طریقہ دستیاب ہے)۔
  • نئی سہولت str_contains(), ذیلی سٹرنگ کی موجودگی کا تعین کرنے کے لیے strpos کا ایک آسان اینالاگ، نیز سٹرنگ کے شروع اور آخر میں میچز کی جانچ کے لیے فنکشنز str_starts_with() اور str_ends_with()۔
  • فنکشن شامل کیا گیا۔ fdiv()، جو صفر سے تقسیم کرتے وقت خرابی پھینکے بغیر تقسیم کا عمل انجام دیتا ہے۔
  • بدل گیا۔ سٹرنگ جوائننگ منطق۔ مثال کے طور پر، اظہار 'echo "sum:" ۔ $a + $b' کو پہلے 'echo ("sum: " . $a) + $b' سے تعبیر کیا گیا تھا، اور PHP 8 میں 'echo "sum: " سمجھا جائے گا۔ ($a + $b)'۔
  • سخت ریاضی اور بٹ آپریشنز کی جانچ پڑتال، مثال کے طور پر، "[] % [42]" اور "$object + 4" کے تاثرات ایک غلطی کا باعث بنیں گے۔
  • لاگو کیا ایک مستحکم ترتیب دینے والا الگورتھم جس میں ایک جیسی اقدار کی ترتیب کو مختلف رنز میں محفوظ کیا جاتا ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں