PHP 8.2-nin alfa testinə başlanılıb

PHP 8.2 proqramlaşdırma dilinin yeni qolunun ilk alfa buraxılışı təqdim olunub. Buraxılış noyabrın 24-nə planlaşdırılır. PHP 8.2-də sınaq üçün artıq mövcud olan və ya həyata keçirilməsi planlaşdırılan əsas yeniliklər:

  • Ayrı-ayrı növlər "yanlış" və "null" əlavə edilmişdir, bunlardan, məsələn, xəta ilə tamamlanma işarəsini və ya funksiya tərəfindən boş dəyər qaytarmaq üçün istifadə edilə bilər. Əvvəllər "false" və "null" yalnız digər növlərlə birlikdə istifadə edilə bilərdi (məsələn, "string|false"), lakin indi onlar ayrıca istifadə edilə bilər: function alwaysFalse(): false { return false; }
  • Bir sinfi yalnız oxumaq üçün qeyd etmək imkanı əlavə edildi. Belə siniflərdə olan xassələr yalnız bir dəfə təyin edilə bilər, bundan sonra onlar dəyişdirilə bilməz. Əvvəllər fərdi sinif xassələri yalnız oxunmaq üçün qeyd oluna bilərdi, lakin indi siz bu rejimi bütün sinif xüsusiyyətləri üçün bir anda yandıra bilərsiniz. Sinif səviyyəsində "yalnız oxumaq" bayrağının təyin edilməsi xassələrin sinfə dinamik əlavə edilməsini də bloklayır. yalnız oxunan sinif Post { ictimai funksiya __construct( ictimai sətir $title, ictimai Müəllif $author, ) {} } $post = new Post(/* … */); $post->naməlum = 'səhv'; // Xəta: Dinamik xüsusiyyət yaratmaq mümkün deyil Post::$naməlum
  • Sinifdə dinamik olaraq xassələr yaratmaq imkanı ləğv edilmişdir (yuxarıdakı misalda "post->naməlum" kimi). PHP 9.0-da sinifdə ilkin olaraq təyin olunmamış xassələrə daxil olmaq xəta ilə nəticələnəcək (ErrorException). Xüsusiyyətlər yaratmaq üçün __get və __set metodlarını və ya stdClass-da dinamik xassələri təmin edən siniflər dəyişməz işləməyə davam edəcək, tərtibatçını gizli xətalardan qorumaq üçün yalnız mövcud olmayan xüsusiyyətlərlə gizli iş dayandırılacaq. Köhnə kodun işlək vəziyyətdə qalması üçün dinamik xüsusiyyətlərin istifadəsinə imkan verən "#[AllowDynamicProperties]" atributu təklif olunur.
  • Səhv anında yığın izi çıxışında həssas parametrləri süzgəcdən keçirmək imkanı təmin edilmişdir. Baş verən səhvlər haqqında məlumat avtomatik olaraq problemləri izləyən və onlar haqqında tərtibatçıları məlumatlandıran üçüncü tərəf xidmətlərinə göndərildikdə müəyyən məlumatların kəsilməsi tələb oluna bilər. Məsələn, istifadəçi adları, parollar və mühit dəyişənləri daxil olan parametrləri izdən xaric edə bilərsiniz. funksiya testi( $foo, #[\SensitiveParameter] $parol, $baz ) { yeni İstisna ('Xəta') atmaq; } test('foo', 'parol', 'baz'); Fatal səhv: Tutulmamış İstisna: test.php-də xəta:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} test.php-də atıldı onlayn 8
  • "${var}" və ${(var)}" ifadələrindən istifadə edərək dəyişən dəyərləri sətirlərə əvəz etmək imkanı ləğv edilib. Tez-tez istifadə olunan "{$var}" və "$var" əvəzetmələri üçün dəstək saxlanılıb. Məsələn: "Salam {$world}"; OK "Salam $world"; OK "Salam ${world}"; Köhnəlmişdir: Sətirlərdə ${} istifadə köhnəlmişdir
  • "call_user_func($callable)" vasitəsilə çağırıla bilən qismən dəstəklənən zənglər köhnəlib, lakin "$callable()": "self::method" "parent::method" "static ::" şəklində zəng etməyi dəstəkləmir. metod" ["self", "metod"] ["valideyn", "metod"] ["statik", "metod"] ["Foo", "Bar::method"] [yeni Foo, "Bar: :method" "]
  • Yerdən müstəqil halda konvertasiya həyata keçirilib. strtolower() və strtoupper() kimi funksiyalar indi həmişə ASCII diapazonunda olan simvolların registrini, yerli dili "C"-yə təyin edərkən olduğu kimi çevirir.

Mənbə: opennet.ru

Добавить комментарий