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.