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

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

PHP 8.3 ۾ اهم تبديليون:

  • ڪلاس ڪلوننگ جي دوران، "صرف پڙهڻ" وصف سان ملڪيت کي ٻيهر شروع ڪرڻ ممڪن آهي. صرف پڙهڻ لاءِ پراپرٽيز کي اوور رائيڊ ڪرڻ جي اجازت صرف ”__ڪلون“ فنڪشن جي اندر آهي: صرف پڙهڻ واري ڪلاس پوسٽ { عوامي فنڪشن __construct (عوامي تاريخ جو وقت $createdAt، ) {} عوامي فنڪشن __clone() { $this->createdAt = new DateTime(); // اجازت ڏني وئي جيتوڻيڪ "createdAt" ملڪيت صرف پڙهڻ لاءِ آهي. } }
  • ڪلاس، خاصيتن ۽ انگن اکرن ۾ قسم جي اشاري سان مستقل استعمال ڪرڻ جي صلاحيت ڏني وئي آھي: class Foo { const string BAR = 'baz'؛ }
  • شامل ڪيل سپورٽ لاءِ ”#[اوور رائڊ]“ وصف، جنهن سان ڊولپر مترجم کي خبر ڏئي سگهي ٿو ته نشان ٿيل طريقو ڪجهه والدين جي طريقي کي اوور رائيڊ ڪري ٿو. جيڪڏهن ڪو به اوور رائڊ نه آهي، مترجم هڪ غلطي ڏيکاريندو.
  • صفا انڊيڪس جي طور تي ناڪاري قدرن کي تبديل ڪيو ويو. مثال طور، جڏهن هڪ عنصر نمبر "-5" سان هڪ خالي صف ۾ شامل ڪيو وڃي ۽ ٻيو عنصر شامل ڪيو وڃي، اڳ ۾ ٻيو عنصر انڊيڪس "0" سان محفوظ ڪيو ويندو هو، پر PHP 8.3 کان شروع ٿيندڙ انڊيڪس "-4" سان محفوظ ڪيو ويندو. . $array = []؛ $array[-5] = 'a'؛ $array[] = 'b'؛ var_export($array)؛ // صف هئي (-5 => 'a'، 0 => 'b') // صفا ٿي ويو (-5 => 'a'، -4 => 'b')
  • صرف پڙهڻ واري موڊ ۾ گمنام ڪلاس ٺاهڻ جي صلاحيت شامل ڪئي وئي: $class = new readonly class { public function __construct( public string $foo = 'bar', ) {} };
  • شامل ڪيو ويو json_validate() فنڪشن جلدي چيڪ ڪرڻ لاءِ ته ڇا هڪ اسٽرنگ JSON فارميٽ ۾ آهي بغير ڊيڪوڊنگ عملن جي. json_validate(string $json, int $depth = 512, int $flags = 0): bool
  • Randomizer ڪلاس ۾ نوان طريقا شامل ڪيا ويا آهن، جيڪي pseudo-random numbers ۽ sequences پيدا ڪرڻ لاءِ هڪ اعليٰ سطحي API مهيا ڪن ٿا: getBytesFromString هڪ ڏنل سائيز جي اسٽرنگ ٺاهڻ لاءِ، بي ترتيب ترتيب ۾ استعمال ڪندي ٻين اسٽرنگ ۾ موجود ڪردارن کي؛ getFloat ۽ nextFloat هڪ بي ترتيب سچل پوائنٽ نمبر پيدا ڪرڻ لاءِ جيڪو مخصوص حد اندر اچي ٿو.
  • متحرڪ طبقو نحو استعمال ڪندي مسلسل حاصل ڪرڻ جي صلاحيت شامل ڪئي وئي: class Foo { const BAR = 'bar'؛ } $name = 'BAR'؛ // اڳي، بار مسلسل حاصل ڪرڻ لاء، توهان کي مسلسل (Foo::class. '::' . $name) کي ڪال ڪرڻو پوندو هو. // ھاڻي صرف وضاحت ڪريو Foo::{$name};
  • تاريخن ۽ وقت سان ڪم ڪندڙ عملن ۾ پيدا ٿيندڙ مسئلن جي صورت ۾ انفرادي استثناءَ جو اضافو (DateMalformedIntervalStringException، DateInvalidOperationException، DateRangeError)
  • غلطين کي سنڀالڻ ۾ بهتري جيڪا غير سيريلائز () فنڪشن ۾ سيريل ٿيل ڊيٽا کي پارس ڪرڻ دوران ٿئي ٿي. مسئلن جي صورت ۾، unserialize() ھاڻي E_NOTICE جي بدران E_WARNING جاري ڪري ٿو.
  • range() فنڪشن ۾ تبديليون ڪيون ويون آهن. هڪ استثنا پيدا ٿئي ٿو جڏهن شيون، وسيلن يا صفن کي متغيرن ۾ منتقل ڪرڻ جي ڪوشش ڪئي وڃي جيڪي حد جي حدن کي بيان ڪن ٿيون، ۽ انهي سان گڏ جڏهن $step پيٽرولر ۾ منفي قدر يا ڪنهن به پيٽرولر ۾ اڻ ڄاڻايل قدر بيان ڪيو وڃي. اکرن جي لسٽ ھاڻي آئوٽ ٿي سگھي ٿي جڏھن انگن جي بدران اسٽرنگ بيان ڪيو وڃي (مثال طور، "range('5'، 'z')").
  • جامد ملڪيتن سان خاصيتن جي رويي کي تبديل ڪيو، جيڪي ھاڻي پيرن ڪلاس کان ورثي ۾ مليل جامد ملڪيتن کي ختم ڪري ڇڏيندا آھن.
  • اسٽيڪ اوور فلو تحفظ لاءِ شامل ڪيل سيٽنگون. zend.max_allowed_stack_size ۽ zend.reserved_stack_size هدايتون ini فائل ۾ شامل ڪيون ويون آھن، وڌ ۾ وڌ اجازت ڏنل ۽ محفوظ ٿيل اسٽيڪ سائيز جي وضاحت ڪندي. پروگرام تباه ٿي ويندو جڏهن اسٽيڪ ختم ٿيڻ جي ويجهو ايندي، جڏهن اسٽيڪ zend.max_allowed_stack_size ۽ zend.reserved_stack_size جي وچ ۾ فرق کان وڌيڪ مڪمل هوندو آهي (سيگمينٽيشن جي غلطي ٿيڻ کان اڳ عمل بند ٿي ويندو). ڊفالٽ طور، zend.max_allowed_stack_size جي قيمت 0 تي مقرر ڪئي وئي آھي (0-سائز پاڻمرادو طئي ٿيل آھي؛ حد کي غير فعال ڪرڻ لاءِ، توھان ان کي سيٽ ڪري سگھو ٿا -1).
  • شامل ڪيا ويا نوان POSIX افعال posix_sysconf()، posix_pathconf()، posix_fpathconf() ۽ posix_eaccess().
  • mb_str_pad فنڪشن شامل ڪيو ويو آهي، جيڪو str_pad() اسٽرنگ فنڪشن جو هڪ اينالاگ آهي، جيڪو ملٽي بائيٽ انڪوڊنگس جهڙوڪ UTF-8 سان ڪم ڪرڻ لاءِ ٺهيل آهي.
  • توهان کي اجازت ڏئي ٿي طريقن مان بندش پيدا ڪرڻ ۽ انهن بندش کي نامزد دليلن کي پاس ڪرڻ جي. $test = نئين ٽيسٽ ()؛ $ بند = $ ٽيسٽ-> جادو (...)؛ $ closure (a: 'هيلو'، ب: 'دنيا')؛
  • تبديل ٿيل رويي جڏهن انٽرفيس ۾ مستقل جي نمائش کي سنڀاليندي. انٽرفيس I { public const FOO = 'foo'؛ } ڪلاس سي لاڳو ڪري ٿو I { نجي const FOO = 'foo'؛ }
  • array_sum()، array_product()، posix_getrlimit()، gc_status()، class_alias()، mysqli_poll()، array_pad() ۽ proc_get_status() افعال جي صلاحيتن کي وڌايو ويو آھي.
  • mb_strimwidth() ۾ منفي $widths جي قدر کي پاس ڪرڻ جي صلاحيت ختم ڪئي وئي آھي. نمبر فارميٽر::TYPE_CURRENCY مستقل هٽايو ويو آهي. ldap_connect() فنڪشن کي ڪال ڪرڻ لاءِ سپورٽ ٻن پيرا ميٽرن سان $host ۽ $port بند ڪئي وئي آهي. opcache.consistency_checks سيٽنگ کي هٽايو ويو آهي.

جو ذريعو: opennet.ru

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