PHP 8.2 پروگرامنگ ٻولي ڇڏڻ

ترقي جي هڪ سال کان پوء، PHP 8.2 پروگرامنگ ٻولي کي جاري ڪيو ويو. نئين شاخ ۾ نئين خاصيتن جو هڪ سلسلو شامل آهي، انهي سان گڏ ڪيتريون ئي تبديليون جيڪي مطابقت کي ٽوڙيندا آهن.

PHP 8.2 ۾ اهم سڌارا:

  • ڪلاس کي صرف پڙهڻ لاءِ نشان لڳائڻ جي صلاحيت شامل ڪئي وئي. اهڙن طبقن ۾ ملڪيت صرف هڪ ڀيرو مقرر ڪري سگهجي ٿو، جنهن کان پوء انهن کي تبديل نه ٿو ڪري سگهجي. اڳي، انفرادي طبقن جي ملڪيتن کي صرف پڙهڻ لاءِ نشان لڳل هوندو هو، پر هاڻي توهان هڪ ئي وقت سڀني طبقي ملڪيتن لاءِ هن موڊ کي فعال ڪري سگهو ٿا. ڪلاس جي سطح تي "صرف پڙھڻ" جھنڊو بيان ڪرڻ پڻ ملڪيت کي ڪلاس ۾ متحرڪ طور شامل ٿيڻ کان روڪي ٿو. صرف پڙهڻ واري ڪلاس پوسٽ { عوامي فنڪشن __ تعمير (عوامي اسٽرنگ $ عنوان، عوامي ليکڪ $ ليکڪ، ) {} } $ پوسٽ = نئين پوسٽ (/* … */); $post->اڻڄاڻ = 'غلط'؛ // نقص: متحرڪ ملڪيت پيدا نه ٿي سگھي پوسٽ::$ نامعلوم
  • شامل ٿيل الڳ الڳ قسمون "سچو"، "غلط" ۽ "نال"، جيڪي صرف ھڪڙي صحيح قدر وٺي سگھن ٿا ۽ استعمال ڪيا ويا آھن، مثال طور، ھڪڙي فنڪشن کي واپس ڪرڻ لاء غلطي ختم ٿيڻ واري پرچم يا خالي قيمت سان. اڳي، "سچو"، "غلط" ۽ "نال" صرف ٻين قسمن سان گڏ استعمال ٿي سگھي ٿو (مثال طور، "string|false")، پر ھاڻي اھي الڳ الڳ استعمال ڪري سگھجن ٿيون: function alwaysFalse(): false { return false ؛ }
  • هڪ غلطي جي دوران اسٽيڪ ٽريس آئوٽ ۾ حساس پيٽرولر کي فلٽر ڪرڻ جي صلاحيت فراهم ڪري ٿي. ڪجهه معلومات کي ختم ڪرڻ ضروري ٿي سگھي ٿو جڏهن غلطين بابت معلومات خودڪار طور تي ٽئين پارٽي جي خدمتن ڏانهن موڪلي ويندي آهي جيڪي مسئلن کي ٽريڪ ڪن ٿا ۽ انهن بابت ڊولپرز کي ڄاڻ ڏين ٿيون. مثال طور، توھان خارج ڪري سگھوٿا پيرا ميٽرز جيڪي شامل آھن صارف نام، پاسورڊ، ۽ ماحوليات متغيرن کي ٽريڪ ڪرڻ کان. فنڪشن ٽيسٽ ($foo، #[\SensitiveParameter] $password، $baz) { اڇلايو نئون استثنا ('Error')؛ } ٽيسٽ ('foo'، 'پاسورڊ'، 'باز')؛ موتمار غلطي: اڻ ڄاتل استثنا: test.php ۾ غلطي: 8 اسٽيڪ ٽريس: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} test.php ۾ اڇلايو ويو لائن 8 تي
  • خاصيتن ۾ مستقل کي بيان ڪرڻ جي اجازت ڏني وئي (خاصيت، ڪوڊ ٻيهر استعمال ڪرڻ لاء هڪ ميڪانيزم). ڪانسٽنٽس کي خاص طور تي بيان ڪيو ويو آهي ان طبقي جي ذريعي رسائي سگهجي ٿو جيڪو خاصيت استعمال ڪري ٿو (پر خاص نالو جي ذريعي نه). خصوصيت Foo { عوامي const CONSTANT = 1؛ عوامي فنڪشن بار (): int { واپسي خود :: CONSTANT // موتمار غلطي } } ڪلاس بار { استعمال ڪريو Foo؛ } var_dump(بار::CONSTANT)؛ // 1
  • شامل ڪيو ويو قسم جي وضاحت ڪرڻ جي صلاحيت غير منقطع عام فارم ۾ (DNF، Disjunctive Normal Form)، جيڪا توهان کي اجازت ڏئي ٿي قسمن جي يونين کي گڏ ڪرڻ (ٻن يا وڌيڪ قسمن جا مجموعا) ۽ قسم جي چونڪ (قسم جن جا قدر ڪيترن ئي هيٺ اچن ٿا. ساڳئي وقت قسم). ڪلاس Foo { عوامي فنڪشن بار((A&B)|null $entity) { if ($entity === null) { واپسي null؛ } واپسي $entity؛ } }
  • هڪ نئين توسيع ”رينڊم“ تجويز ڪئي وئي آهي ڪمن ۽ طبقن سان pseudo-random نمبرن ۽ sequences پيدا ڪرڻ لاءِ. ماڊيول هڪ اعتراض تي مبني انٽرفيس مهيا ڪري ٿو، توهان کي مختلف انجڻون چونڊڻ جي اجازت ڏئي ٿو pseudo-random نمبرز پيدا ڪرڻ لاءِ، بشمول اهي جيڪي cryptography ۾ استعمال لاءِ موزون آهن، ۽ معاون افعال مهيا ڪري ٿو، مثال طور، بي ترتيب ترتيب سان ملائڻ وارين صفن ۽ تارن لاءِ، بي ترتيب سرن جي ڪيز کي چونڊڻ، توهان جي پنهنجي آزاد رياست سان گڏ ڪيترن ئي جنريٽر جو استعمال. $rng = $is_production؟ نئون Random\Engine\Secure(): نئون 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_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}"؛ ختم ٿيل: ${} کي اسٽرنگ ۾ استعمال ڪرڻ رد ڪيو ويو آهي
  • رد ڪيل جزوي طور تي سپورٽ ڪيل ڪال ايبلز جن کي "call_user_func($callable)" ذريعي سڏي سگهجي ٿو پر "$callable()": "self::method" "parent::method" "static" ::method جي صورت ۾ ڪالنگ کي سپورٽ نٿو ڪري " ["خود"، "طريقو"] ["والدين"، "طريقو"] ["جامد"، "طريقو"] ["فو"، "بار:: طريقو"] [نئون فو، "بار:: طريقو" ]
  • error_log_mode هدايتون سيٽنگون ۾ شامل ڪيون ويون آھن، توھان کي اجازت ڏيڻ جي اجازت ڏئي ٿي پھچڻ واري موڊ کي غلطي لاگ ڏانھن.

جو ذريعو: opennet.ru

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