PHP 8.4.22 Released!

Сериализация

Перечисления сериализуются иначе, чем объекты. В частности, для перечислений ввели новый код сериализации — "E", который обозначает название варианта перечисления. По этому названию процедура десериализации затем находит единственный экземпляр перечисления и присваивает значение переменной. Это гарантирует, что:

<?php
enum Suit: string
{
case
Hearts = 'H';
case
Diamonds = 'D';
case
Clubs = 'C';
case
Spades = 'S';
}

Suit::Hearts === unserialize(serialize(Suit::Hearts));

print
serialize(Suit::Hearts);
// E:11:"Suit:Hearts";

PHP выдаст предупреждение и вернёт значение false, если не найдёт перечисление и вариант для сопоставления сериализованному значению.

При попытке сериализовать чистое перечисление в JSON-формат выбрасывается исключение (если только функцию вызвали с флагом JSON_THROW_ON_ERROR — прим. перев.). При сериализации типизированного перечисления в JSON-формат оно представляется только своим скалярным значением того типа, который указали в перечислении. Поведение сериализации как чистых, так и типизированных перечислений переопределяется путём реализации интерфейса JsonSerializable.

Для функции print_r() вывод варианта перечисления незначительно отличается от объектов, чтобы уменьшить путаницу.

<?php
enum Foo
{
case
Bar;
}

enum
Baz: int
{
case
Beep = 5;
}

print_r(Foo::Bar);
print_r(Baz::Beep);

/* Выводит

Foo Enum
(
[name] => Bar
)
Baz Enum:int
(
[name] => Beep
[value] => 5
)
*/
Добавить

Примечания пользователей 1 note

up
0
admin at monkacres dot se
2 days ago
With the try-catch block, it gave me this error
db.r103.websupport.seSuccessfully connected!Felmeddelande: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?,?,?) SLEEP(1)' at line 1
Fatal error: Uncaught Error: Call to a member function bind_param() on null in /data/b/9/b978798f-dd6c-4ab7-a020-f3e998d6dfc0/monkacres.se/web/register.php:28 Stack trace: #0 {main} thrown in /data/b/9/b978798f-dd6c-4ab7-a020-f3e998d6dfc0/monkacres.se/web/register.php on line 28
And this is easy

First, add
$userName=$_POST['userName'] ?? '';
$emailVerify=$_POST['emailVerify'] ?? '';
$passWord=$_POST['passWord'] ?? '';
To Top