Метод fromBinary класса Ulid
Метод fromBinary класса Ulid создаёт объект ULID
из бинарной строки длиной ровно 16 байт. Это удобно, когда
ULID хранится в базе данных в бинарном виде, например в поле
типа BINARY(16) или BLOB. Первым параметром
передаётся сама бинарная строка. Если длина строки не равна
16 байтам, метод выбросит исключение
InvalidArgumentException. Обратной операцией является
метод toBinary, который возвращает 16-байтовое
представление ULID.
Синтаксис
public static function fromBinary(string $ulid): static
Пример
Давайте создадим ULID из бинарной строки и выведем его:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Uid\Ulid;
class UlidController extends AbstractController
{
public function index(): Response
{
$binary = hex2bin('017f22e279b0b5c9d3c1a5b7e8f9a0b1');
$ulid = Ulid::fromBinary($binary);
return new Response($ulid->toBase32());
}
}
?>
Результат выполнения кода:
"01F8Z9V6Y4W3X2T1S0R9Q8P7M6"
Пример
Давайте проверим, что метод выбрасывает исключение при неверной длине строки:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Uid\Ulid;
class UlidController extends AbstractController
{
public function index(): Response
{
try {
$ulid = Ulid::fromBinary('abcde');
} catch (\InvalidArgumentException $e) {
return new Response($e->getMessage());
}
return new Response('ok');
}
}
?>
Результат выполнения кода:
"Invalid ULID: abcde."
Пример
Давайте сохраним ULID в бинарном виде и восстановим его обратно:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Uid\Ulid;
class UlidController extends AbstractController
{
public function index(): Response
{
$ulid = new Ulid();
$binary = $ulid->toBinary();
$restored = Ulid::fromBinary($binary);
return new Response($ulid->equals($restored) ? 'equal' : 'not equal');
}
}
?>
Результат выполнения кода:
"equal"
Смотрите также
-
класс
Ulid,
который представляет собой ULID-идентификатор -
метод
fromString,
который создаёт ULID из строки -
метод
toRfc4122,
который возвращает ULID в формате RFC 4122 -
метод
toBase32,
который возвращает ULID в формате Base32