The PHP team has released PHP 8.2 today with read-only classes, new stand-alone types, a new random extension, trait constants, oraz more:
Klasy tylko do odczytu
Opierając się na właściwościach tylko do odczytu PHP 8.1, oznaczenie klasy jako tylko do odczytu sprawia, że każda właściwość klasy jest tylko do odczytu i zapobiega tworzeniu właściwości dynamicznych.
readonly class BlogData
{
public string $title;
public Status $status;
public function __construct(string $title, Status $status)
{
$this->title = $title;
$this->status = $status;
}
}
Rozłączne typy postaci normalnej (DNF)
Typy DNF łączą typy łączące i przecinające:
class Foo {
public function bar((A&B)|null $entity) {
if ($entity === null) {
return null;
}
return $entity;
}
}
Null, fałszywy, and PRAWDA stand-alone types
PHP 8.2 pozwala teraz false
, true
, and zero
jako samodzielne typy. Ten przykład jest dość oczywisty:
class Falsy
{
public function alwaysFalse(): false { /* ... */ *}
public function alwaysTrue(): true { /* ... */ *}
public function alwaysNull(): null { /* ... */ *}
}
Stałe w cechach
Stałe są teraz dozwolone w cechach. Nie możesz uzyskać dostępu do stałych poprzez nazwę cechy, jednak możesz uzyskać dostęp do stałej poprzez klasę, używając cechy:
trait Foo
{
public const CONSTANT = 1;
public function bar(): int
{
return self::CONSTANT; // Fatal error
}
}
class Bar
{
use Foo;
}
var_dump(Bar::CONSTANT); // 1
Dynamiczna amortyzacja właściwości
Właściwości dynamiczne są przestarzałe, co oznacza, że przy przypisywaniu wartości do właściwości dynamicznej otrzymasz powiadomienie o wycofaniu:
class User
{
public $name;
}
$user = new User();
$user->last_name = 'Doe'; // Deprecated notice
$user = new stdClass();
$user->last_name = 'Doe'; // Still allowed
Możesz także zezwolić na właściwości dynamiczne przy użyciu Zezwól na właściwości dynamiczne
atrybut:
#[AllowDynamicProperties]
class User() {}
$user = new User();
$user->foo = 'bar';
Nowe klasy, interfejsy, atrybuty i funkcje
PHP 8.2 zawiera nowe klasy, interfejsy, atrybuty i funkcje. Pełną listę znajdziesz w sekcji Nowe klasy, interfejsy i funkcje Ogłoszenie wydania PHP 8.2.0.
Wspomnieliśmy już o Zezwól na właściwości dynamiczne
atrybut. Kolejnym atrybutem jest tzw #[\Parametr wrażliwy]
atrybut, który redaguje poufne informacje w śledzeniu stosu:
function sensitiveParametersWithAttribute(
#[\SensitiveParameter]
string $secret,
string $normal
) {
throw new Exception('Error!');
}
Ucz się więcej
Aby zapoznać się z tymi nowymi funkcjami, sprawdź Ogłoszenie wydania PHP 8.2.0 strona z przykładami przed/po PHP 8.2 i przejrzyj te linki, aby uzyskać więcej informacji na temat każdego elementu: