PHP 8.2 альфа тестілеу басталды

PHP 8.2 бағдарламалау тілінің жаңа тармағының бірінші альфа-шығарылымы ұсынылды. Шығарылым 24 қарашаға жоспарланған. Тестілеу үшін қол жетімді немесе PHP 8.2 жүйесінде енгізу жоспарланған негізгі инновациялар:

  • Мысалы, қатені тоқтату жалауын немесе бос мәнді қайтаратын функция үшін пайдаланылуы мүмкін «жалған» және «нөл» бөлек түрлері қосылды. Бұрын «false» және «null» тек басқа түрлермен бірге пайдаланылуы мүмкін (мысалы, «string|false»), бірақ енді оларды бөлек қолдануға болады: function alwaysFalse(): false { return false; }
  • Сыныпты тек оқуға арналған деп белгілеу мүмкіндігі қосылды. Мұндай кластардағы қасиеттерді тек бір рет орнатуға болады, содан кейін оларды өзгерту мүмкін емес. Бұрын жеке сынып сипаттарын тек оқу үшін белгілеуге болады, бірақ енді бұл режимді барлық сынып сипаттарына бірден қосуға болады. Сынып деңгейінде "тек оқуға арналған" жалаушаны көрсету сонымен қатар сипаттарды сыныпқа динамикалық түрде қосуды блоктайды. тек оқуға арналған сынып Жазба { жалпыға ортақ функция __construct(қоғамдық жол $атауы, ашық Автор $автор, ) {} } $post = new Post(/* … */); $post->белгісіз = 'қате'; // Қате: динамикалық сипат жасау мүмкін емес Post::$белгісіз
  • Сыныпта сипаттарды динамикалық түрде жасау мүмкіндігі (жоғарыдағы мысалдағы "пост->белгісіз" сияқты) ескірген. PHP 9.0-де сыныпта бастапқыда анықталмаған сипаттарға қатынасу қатеге әкеледі (ErrorException). Сипаттар жасау үшін __get және __set әдістерін немесе stdClass ішіндегі динамикалық сипаттарды қамтамасыз ететін сыныптар өзгеріссіз жұмысын жалғастырады, әзірлеушіні жасырын қателерден қорғау үшін тек жоқ сипаттармен жасырын жұмысқа қолдау көрсетіледі. Ескі кодтың жұмысын сақтау үшін динамикалық сипаттарды пайдалануға мүмкіндік беретін “#[AllowDynamicProperties]” төлсипаты ұсынылады.
  • Қате кезінде стек ізінің шығысындағы сезімтал параметрлерді сүзу мүмкіндігін береді. Орын алған қателер туралы ақпарат ақауларды қадағалайтын және олар туралы әзірлеушілерге хабарлайтын үшінші тарап қызметтеріне автоматты түрде жіберілгенде, белгілі бір ақпаратты өшіру қажет болуы мүмкін. Мысалы, пайдаланушы атын, құпия сөздерді және орта айнымалы мәндерін қамтитын параметрлерді бақылаудан шығаруға болады. функция сынағы( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Қате'); } test('foo', 'password', 'baz'); Күрделі қате: Ұсталмаған ерекше жағдай: test.php қатесі: 8 Стек ізі: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') №1 {main} test.php файлында тасталды 8-жолда
  • "${var}" және ${(var)} өрнектері арқылы айнымалы мәндерді жолдарға ауыстыру мүмкіндігі ескірген. Жиі қолданылатын "{$var}" және "$var" ауыстыруларына қолдау сақталды. Мысалы: "Hello {$world}"; Жарайды "Hello $world"; Жарайды "Сәлем ${world}"; Ескірген: ${} жолдарда пайдалану ескірген
  • "call_user_func($callable)" арқылы шақыруға болатын, бірақ "$callable()": "self::method" "parent::method" "static" ::method түрінде қоңырау шалуды қолдамайтын ескірген жартылай қолдау көрсетілетін шақырулар " ["өзіндік", "әдіс"] ["ата-ана", "әдіс"] ["статикалық", "әдіс"] ["Фу", "Бар:: әдіс"] [жаңа Foo, "Бар: :әдіс" ]
  • Орнатылған тілден тәуелсіз регистр түрлендіру. strtolower() және strtoupper() сияқты функциялар енді әрқашан ASCII ауқымындағы таңбалардың регистрін "C" тіліне орнатылғандай түрлендіреді.

Ақпарат көзі: opennet.ru

пікір қалдыру