Rozpoczęło się testowanie alfa PHP 8.2

Została zaprezentowana pierwsza wersja alfa nowej gałęzi języka programowania PHP 8.2. Premiera zaplanowana jest na 24 listopada. Główne nowości, które są już dostępne do testowania lub planowane do wdrożenia w PHP 8.2:

  • Dodane zostały oddzielne typy „false” i „null”, które mogą być używane, na przykład, do zwracania przez funkcję wskaźnika zakończenia z błędem lub pustej wartości. Wcześniej „false” i „null” mogły być używane tylko w połączeniu z innymi typami (na przykład „string|false”), a teraz mogą być stosowane osobno: function alwaysFalse(): false { return false; }
  • Dodano możliwość oznaczania klasy jako dostępnej tylko do odczytu. Właściwości w takich klasach mogą być ustawiane tylko raz, po czym nie będą dostępne do zmiany. Wcześniej tylko do odczytu mogły być oznaczane poszczególne właściwości klasy, a teraz można włączyć ten tryb dla wszystkich właściwości klasy jednocześnie. Ustawienie flagi „readonly” na poziomie klasy również blokuje dynamiczne dodawanie właściwości do klasy. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = ‘wrong’; // Błąd: Nie można utworzyć dynamicznej właściwości Post::$unknown
  • Ogłoszono przestarzałą możliwość dynamicznego tworzenia właściwości w klasie (jak „post->unknown” w powyższym przykładzie). W PHP 9.0 odwołania do właściwości, które nie są pierwotnie zdefiniowane w klasie, będą prowadzić do błędu (ErrorException). Klasy, które udostępniają metody __get i __set do tworzenia właściwości, lub dynamiczne właściwości w stdClass będą działać bez zmian, zostanie wstrzymane wsparcie tylko dla niejawnej pracy z nieistniejącymi właściwościami, aby chronić programistę przed ukrytymi błędami. Aby zachować działanie starego kodu, zaproponowano atrybut „#[AllowDynamicProperties]”, który zezwala na użycie dynamicznych właściwości.
  • Wprowadzono możliwość filtrowania poufnych parametrów w danych stosu śladowego wyświetlanych podczas błędu. Wykluczanie określonych informacji może być wymagane, gdy szczegóły występujących błędów są automatycznie przesyłane do zewnętrznych usług, które śledzą problemy i informują o nich programistów. Na przykład, można wykluczyć z śladu parametry zawierające nazwy użytkowników, hasła i zmienne środowiskowe. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception(‘Błąd’); } test(‘foo’, ‘password’, ‘baz’); Fatal error: Uncaught Exception: Błąd w test.php:8 Ślad stosu: #0 test.php(11): test(‘foo’, Object(SensitiveParameterValue), ‘baz’) #1 {main} wyrzucone w test.php w linii 8
  • Ogłoszono, że możliwość podstawiania wartości zmiennych do łańcuchów za pomocą wyrażeń «${var}» i ${(var)}» jest przestarzała. Wsparcie dla często używanych podstawień «{$var}» i «$var» zostało zachowane. Na przykład: «Hello {$world}»; OK «Hello $world»; OK «Hello ${world}»; Przestarzałe: Używanie ${} w łańcuchach jest przestarzałe
  • Ogłoszono, że częściowo obsługiwane obiekty wywoływalne (callable), które można wywołać przez «call_user_func($callable)», ale nie obsługują wywołania w formie «$callable()»: «self::method» «parent::method» «static::method» [«self», «method»] [«parent», «method»] [«static», «method»] [«Foo», «Bar::method»] [new Foo, «Bar::method»]
  • Wdrążono niezależną od lokalizacji konwersję wielkości liter. Funkcje, takie jak strtolower() i strtoupper(), teraz zawsze przekształcają wielkość liter w zakresie ASCII tak, jak przy ustawieniu lokalizacji «C».

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster