Nowości w PHP 8.2

Data aktualizacji: 4.05.2024r. Autor: Bartosz Stefanicki.

Nowości w PHP 8.2

PHP w wersji 8.2 zostanie wydane 24 listopada 2022 roku. Sprawdźmy co nowego pokaże się tym razem.

1. Nowe typy zwracanych danych: true, false, null

Przed wersją PHP 8.2 możliwe jest zwracanie danych w łączonych postaciach (unions), np. ?string. Wówczas metoda może zwrócić string lub null. PHP 8.2 wprowadza nowe typy zwracanych danych: true, false i null.

function testMethod(): null
{
    return null;
} 

function testMethod(): true
{
    return true;
} 

2. Klasy tylko do odczytu (readonly classes)

Wersja PHP 8.1 wprowadziła modyfikator readonly do właściwości klas. Wersja PHP 8.2 wprowadza ten modyfikator do oznaczenia klasy, dzięki czemu można skrócić zapis i nie oznaczać po kolei wszystkich właściwości klas jako readonly.

class User
{
    public function __construct(
        public readonly string $firstName,
        public readonly integer $status,
        public readonly DateTime $createdAt,
    ) {}
}

Wersja w PHP 8.2 może wyglądać następująco:

readonly class User
{
    public function __construct(
        public string $firstName,
        public integer $status,
        public DateTime $createdAt,
    ) {}
}

3. Wycofanie dynamicznych właściwości

PHP 8.2 wycofuje dynamiczne właściwości w klasach. Od PHP 8.2 wyświetlane będzie ostrzeżenie E_DEPRECATED, od wersji 9.0 wyrzucany będzie wyjątek typu Error.

Ostrzeżenie do wersji PHP 9.0 można ukryć za pomocą atrybutu #[AllowDynamicProperties]. Przykład z RFC:

class User {
    public $name;
}

$user = new User();

// Assigns declared property User::$name.
$user->name = 'foo';

// Oops, a typo:
$user->nane = 'foo';

4. Wycofanie utf8_encode() i utf8_decode()

PHP 8.2 wycofuje utf8_encode() i utf8_decode(). Konwertowały one pomiędzy kodowaniem znaków ISO-8859-1 a UTF-8. Próba ich wykorzystania wywoła poniższy błąd:

    Deprecated: Function utf8_encode() is deprecated
    Deprecated: Function utf8_decode() is deprecated

Wskazywana alternatywa to wykorzystanie mb_convert_encoding().

Kalendarz wersji PHP

Zobacz także kalendarz wsparcia wersji PHP.

Kategorie: PHP + MySQL. Tagi: #hosting, #php, #skrypty, #top10. Źródło obrazków: Pixabay, Font awesome.

Zobacz także

Komentarze