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

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

کيل سڌارا PHP 7.4 ۾:

  • ٽائپ ڪيل ملڪيت - طبقاتي ملڪيتن ۾ ھاڻي شامل ٿي سگھي ٿو قسم جا بيان، مثال طور:

    ڪلاس استعمال ڪندڙ {
    عوامي int $id؛
    عوامي اسٽرنگ $name؛
    }

  • مخفف فعل جي وضاحت لاءِ نحو "fn(parameter_list) => expr" قدر جي لحاظ سان اسڪوپ بائنڊنگ سان. مثال طور، "fn($x) => $x + $y" جي برابر آهي "$fn2 = فنڪشن ($x) استعمال ($y) {واپسي $x + $y؛}")؛
  • شارٽ هينڊ اسائنمينٽ آپريٽر "؟؟=" جيڪو ڊفالٽ قدر جي وضاحت ڪرڻ لاءِ استعمال ڪري سگھجي ٿو ("a ??= b" "a = a ?? b" سان ملندڙ جلندڙ آهي، جيڪڏهن "a" جي وضاحت ڪئي وڃي ته ان جي قيمت محفوظ ڪئي ويندي آهي، ۽ جيڪڏهن وضاحت نه ڪئي وئي آهي. مقرر ڪيل قدر "b")؛
  • محدود موقعو حاصل ڪيل واپسي جي قسمن ۾ قسمن جي وراثت واري درجه بندي کي محفوظ ڪرڻ، يا حاصل ڪيل دليلن جي قسمن ۾ اصل قسمن جي درجه بندي کي ريورس ڪرڻ جي صلاحيت (همٿ واپسي جو قسم ۽ دليل جو قسم تضاد). هيٺيون تعميرات هاڻي PHP ۾ استعمال ڪري سگھجن ٿيون:

    ڪلاس A {}
    ڪلاس B وڌائي ٿو A {}

    ڪلاس پروڊيوسر {
    عوامي ڪم جو طريقو(): A {}
    }
    ڪلاس چائلڊ پروڊيوسر پروڊيوسر کي وڌايو {
    عوامي ڪم جو طريقو(): B {}
    }

  • صفن اندر آپريٽر کي پيڪنگ ڪرڻ “…$var”، اجازت ڏيڻ موجوده صفن جي متبادل کي انجام ڏيو جڏهن نئين صف جي وضاحت ڪريو؛

    $parts = ['apple'، 'pear']؛
    $fruits = ['ڪيلا'، 'نارنگي'، …$ حصا، 'تربوز']؛
    // ['ڪيلا'، 'نارنگي'، 'سيب'، 'پيئر'، 'تربوز']؛

  • موقعو انگن اکرن جي حدن سان وڏي انگن جي بصري نمائندگي (1_000_000_00)؛
  • حمايت ڪمزور لنڪس، جيڪو توهان کي ڪنهن شئي جو حوالو برقرار رکڻ جي اجازت ڏئي ٿو، پر گندي جمع ڪندڙ کي لاڳاپيل اعتراض کي حذف ڪرڻ کان روڪي نه ٿو؛
  • نئين ميڪانيزم آبجیکٹ سيريلائيزيشن (Serializable ۽ __sleep()/__wakeup() جو هڪ مجموعو)، جيڪو تبديل ڪيو سيريلائيبل انٽرفيس، جنهن کي ختم ڪيو ويندو؛

    // ھڪڙي صف کي موٽائي ٿو جنھن ۾ اعتراض جي سڀني رياستن تي مشتمل آھي؛
    عوامي فنڪشن __serialize(): array؛

    // هڪ صف مان هڪ اعتراض جي حالت کي بحال ڪري ٿو
    عوامي فنڪشن __unserialize(array $data): void؛

  • ھڪڙي طريقي کان استثناء کي اڇلائڻ جي اجازت ڏني وئي __toString();
  • شامل ڪيل سپورٽ اعتراض ڪوڊ ڪيش کي اڳ لوڊ ڪرڻ لاء. سيٽنگ لاءِ شامل ڪيل پيٽرول
    opcache.preload، جنهن جي ذريعي توهان هڪ PHP اسڪرپٽ بيان ڪري سگهو ٿا جيڪو مرتب ڪيو ويندو ۽ هلندو جڏهن سرور شروع ٿيندو. هي اسڪرپٽ ٻين فائلن جو اوپي ڪوڊ لوڊ ڪري سگهي ٿو انهن جي سڌي شموليت ذريعي يا استعمال ڪندي opcache_compile_file() فنڪشن؛
  • شامل ڪيو ويو crc32c فنڪشن کي Hash ايڪسٽينشن ۾ چيڪسم کي ڳڻڻ لاءِ Castagnoli polynomial استعمال ڪندي؛
  • شامل ڪيل سپورٽ پاسورڊ_hash() فنڪشن لاءِ پاسورڊ هيشنگ طريقن argon2i ۽ argin2id، سوڊيم لائبريري جي عمل ۾، جيڪڏهن PHP بغير ليبارگن جي ٺهيل آهي؛
  • شامل ڪيو ويو فنڪشن mb_str_split()، ساڳيو str_split()، پر ڪم بائيٽ سان نه پر ملٽي بائيٽ اسٽرنگ ۾ ڪردار جي پوزيشن سان؛
  • strip_tags() فنڪشن هاڻي ٽيگ نالن سان هڪ صف کي پاس ڪرڻ جي صلاحيت رکي ٿو، يعني. بجاءِ strip_tags($str, ' ') توهان هاڻي وضاحت ڪري سگهو ٿا strip_tags($str, ['a', 'p']);
  • proc_open() هلائڻ لاءِ اسٽرنگ جي بجاءِ آپرينڊز کي هڪ صف ۾ درج ٿيڻ جي اجازت ڏئي ٿو، ۽ ٿلهي فائل جي وضاحت ڪندڙ لاءِ ٿريڊ ريڊائريڪشن ۽ سپورٽ پڻ مهيا ڪري ٿي؛

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    // شيل ۾ 2> ۽ 1 وانگر
    proc_open($cmd, [1 => ['پائپ', 'w'], 2 => ['redirect', 1]], $pipes);

    // پسند ڪريو 2>/dev/null يا 2>nul شيل ۾
    proc_open($cmd, [1 => ['پائپ', 'w'], 2 => ['null']], $pipes);

  • Firebird/Interbase، Recode ۽ WDDX ايڪسٽينشنز کي بنيادي ورهائڻ کان خارج ڪيو ويو آھي. اهي واڌايون هاڻي PECL ذريعي ورهايون ويون آهن؛
  • ڪيٽيگري ۾ منتقل ڪيو ويو پراڻو خاصيتون جهڙوڪ nested ternary آپريٽرز بغير قوس جي، پهچڻ وارين عناصرن ۽ تارن تائين پهچندڙ ڪنگڻ (“$var{$idx}”) استعمال ڪندي، is_real() فنڪشن ۽ حقيقي ڏانهن ڪاسٽ ڪرڻ، پيرن ڪلاس کان سواءِ والدين ڪي ورڊ استعمال ڪندي، پيرا ميٽر اجازت_url_include ترتيب استعمال ڪندي array_key_exists() شين تي.

    فنڪشن get_magic_quotes_gpc(), get_magic_quotes_runtime(), ۽
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    هڪ غير معمولي خصوصيت جي استعمال بابت خبردار ڪيو ويو آهي جڏهن افعال ۾ غلط علامتن کي پروسيس ڪرڻ جي ڪوشش ڪئي وئي آهي
    base_convert()، bindec()، octdec() ۽ hexdec()، ۽ جڏهن mb_ereg_replace() ۾ غير اسٽرنگ جو نمونو بيان ڪيو وڃي.

جو ذريعو: opennet.ru

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