پی ایچ پی 8.2 پروگرامنگ زبان کی ریلیز

ترقی کے ایک سال کے بعد، پی ایچ پی 8.2 پروگرامنگ زبان کی رہائی پیش کی گئی۔ نئی برانچ میں نئی ​​خصوصیات کی ایک سیریز کے ساتھ ساتھ مطابقت کو ختم کرنے والی متعدد تبدیلیاں شامل ہیں۔

پی ایچ پی 8.2 میں کلیدی بہتری:

  • کلاس کو صرف پڑھنے کے لیے نشان زد کرنے کی اہلیت شامل کی گئی۔ ایسی کلاسوں میں پراپرٹیز صرف ایک بار سیٹ کی جا سکتی ہیں، اس کے بعد انہیں تبدیل نہیں کیا جا سکتا۔ پہلے، انفرادی کلاس پراپرٹیز کو صرف پڑھنے کے لیے نشان زد کیا جا سکتا تھا، لیکن اب آپ اس موڈ کو تمام کلاس پراپرٹیز کے لیے ایک ساتھ فعال کر سکتے ہیں۔ کلاس کی سطح پر "صرف پڑھنے والے" جھنڈے کی وضاحت کرنا بھی خصوصیات کو کلاس میں متحرک طور پر شامل ہونے سے روکتا ہے۔ صرف پڑھنے والی کلاس پوسٹ { عوامی فنکشن __ تعمیر ( عوامی سٹرنگ $ عنوان، عوامی مصنف $ مصنف، ) {} } $ post = نئی پوسٹ (/* … */); $post-> نامعلوم = 'غلط'؛ // خرابی: متحرک پراپرٹی نہیں بنا سکتا پوسٹ::$ نامعلوم
  • "سچ"، "غلط" اور "نال" کی الگ الگ قسمیں شامل کی گئیں، جو صرف ایک درست قدر لے سکتی ہیں اور مثال کے طور پر، کسی فنکشن کو خرابی ختم کرنے والے جھنڈے یا خالی قدر کے ساتھ واپس کرنے کے لیے استعمال کی جاتی ہیں۔ پہلے، "true"، "false" اور "null" کو صرف دوسری اقسام کے ساتھ استعمال کیا جا سکتا تھا (مثال کے طور پر، "string|false")، لیکن اب انہیں الگ سے استعمال کیا جا سکتا ہے: function alwaysFalse(): false { return false ; }
  • خرابی کے دوران اسٹیک ٹریس آؤٹ پٹ میں حساس پیرامیٹرز کو فلٹر کرنے کی صلاحیت فراہم کرتا ہے۔ کچھ معلومات کاٹنا ضروری ہو سکتا ہے جب ہونے والی غلطیوں کے بارے میں معلومات خود بخود فریق ثالث کی خدمات کو بھیجی جاتی ہیں جو مسائل کو ٹریک کرتی ہیں اور ڈویلپرز کو ان کے بارے میں مطلع کرتی ہیں۔ مثال کے طور پر، آپ ایسے پیرامیٹرز کو خارج کر سکتے ہیں جن میں صارف کے نام، پاس ورڈز، اور ماحولیاتی متغیرات شامل ہیں ٹریسنگ سے۔ فنکشن ٹیسٹ ($foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error')؛ } ٹیسٹ ('foo'، 'پاس ورڈ'، 'باز')؛ مہلک خرابی: غیر پکڑی گئی استثنا: test.php میں خرابی: 8 اسٹیک ٹریس: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} test.php میں پھینک دیا گیا لائن 8 پر
  • خصلتوں میں مستقل کی وضاحت کرنے کی اجازت ہے (خصائص، کوڈ کو دوبارہ استعمال کرنے کا طریقہ کار)۔ کسی خاصیت میں متعین کنسٹینٹس تک اس کلاس کے ذریعے رسائی حاصل کی جاسکتی ہے جو خاصیت کا استعمال کرتی ہے (لیکن خاصیت کے نام کے ذریعے نہیں)۔ خصوصیت Foo { عوامی const CONSTANT = 1؛ عوامی فنکشن بار(): int { واپسی self::CONSTANT; // مہلک غلطی } } کلاس بار { Foo استعمال کریں؛ } var_dump(Bar::CONSTANT); // 1
  • غیر منقولہ نارمل شکل (DNF، Disjunctive Normal Form) میں اقسام کی وضاحت کرنے کی صلاحیت شامل کی گئی ہے، جو آپ کو اقسام کے اتحاد (دو یا دو سے زیادہ اقسام کے مجموعے) اور اقسام کے انقطاع کو یکجا کرنے کی اجازت دیتی ہے (وہ قسمیں جن کی قدریں کئی کے نیچے آتی ہیں۔ بیک وقت اقسام)۔ کلاس Foo { پبلک فنکشن بار((A&B)|null $entity) { if ($entity === null) { واپس null; } واپس $entity; } }
  • چھدم بے ترتیب نمبر اور ترتیب پیدا کرنے کے لیے فنکشنز اور کلاسز کے ساتھ ایک نئی ایکسٹینشن "رینڈم" تجویز کی گئی ہے۔ ماڈیول ایک آبجیکٹ پر مبنی انٹرفیس فراہم کرتا ہے، آپ کو چھدم بے ترتیب نمبر بنانے کے لیے مختلف انجنوں کو منتخب کرنے کی اجازت دیتا ہے، بشمول خفیہ نگاری میں استعمال کے لیے موزوں، اور معاون افعال فراہم کرتا ہے، مثال کے طور پر، تصادفی طور پر صفوں اور تاروں کو ملانا، بے ترتیب صف کی چابیاں منتخب کرنا، آپ کی اپنی آزاد ریاست کے ساتھ متعدد جنریٹرز کا بیک وقت استعمال۔ $rng = $is_production؟ new Random\Engine\Secure() : new Random\Engine\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_leng.
  • نئے طریقے شامل کیے گئے: mysqli::execute_query، ZipArchive::getStreamIndex، ZipArchive::getStreamName، ZipArchive::clearError، ReflectionFunction::isAnonymous، ReflectionMethod::hasPrototype۔
  • کلاس میں متحرک طور پر خصوصیات بنانے کی صلاحیت کو فرسودہ کر دیا گیا ہے۔ پی ایچ پی 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

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