Как Laravel использует сторонние пакеты (серия из 10 частей)
Из раздела “О программе” на GitHub пакета ramsey/uuid:
Библиотека PHP для генерации универсально уникальных идентификаторов (UUID).
Первое, что мы замечаем, что это не пакет Laravel, а библиотека PHP, и ее можно использовать в любом PHP-проекте. Во-вторых, универсально уникальные идентификаторы (UUID) , давайте немного поговорим о том, что такое UUID.
Что такое UUID?
UUID означает Универсально Уникальный идентификатор . Когда говорится “Универсально”, это действительно означает “Универсально”.
Когда вы создаете UUID, его уникальность может быть гарантирована в пространстве и времени.
Идентификатор UUID имеет длину 128 бит и обычно представляется в виде шестнадцатеричной строки, разделенной на пять групп с тире, как показано ниже:
998fd066-c786-4064-9c98-e378e450cd4a
Мы можем использовать эти уникальные значения и присваивать их записям нашей базы данных, а затем идентифицировать записи по этим шестнадцатеричным строкам.
UUID в Laravel
Фреймворк Laravel славится лучшим опытом разработчиков (DX), поэтому Laravel упрощает работу с UUID. Если вы откроете tinker в проекте Laravel и напишете ниже фрагмент кода:
(string) Str::uuid();
Вы получите результат, как показано ниже:
"220b94fc-04f9-48eb-a14a-ba868ff43919"
Создать UUID в Laravel очень просто. Теперь давайте посмотрим, как это работает и где вступает в игру пакет ramsey/uuid .
Кодовое погружение
Если мы углубимся в определение метода Str::uuid() , мы увидим следующее:
Если мы сначала вызовем create Uuid с помощью метода() и предоставим обратный вызов , который создаст UUID, метод uuid() выполнит этот обратный вызов для создания UUID. Но если это не так, он будет использовать Uuid::uuid4() из ramsey/uuid для генерации UUID для нас. Вот как Laravel может генерировать UUID, используя ramsey/uuid пакет.
Возможно, вам интересно, почему этот метод называется uuid4() ? Что делает 4 имеешь в виду здесь?
Существует пять версий UUID. Каждая версия имеет свой алгоритм для его генерации. Подробнее обо всех версиях читайте в документах пакета ramsey/uuid .
UUID в миграциях Laravel
Laravel предоставляет удобный метод для Осветите\Базу данных\Схему\схему класс с именем uuid , чтобы указать в миграциях, что этот столбец будет использоваться для хранения UUID.
$table->uuid('id');
Вы можете задаться вопросом, есть ли в базе данных тип столбца , в котором хранятся идентификаторы UUID, но это не так. Если мы заглянем внутрь класса Illuminate\База данных\Схема\Грамматики\MySqlGrammar и найдем метод типа Uuid() , мы увидим следующее:
/**
* Create the column definition for a uuid type.
*
* @param \Illuminate\Support\Fluent $column
* @return string
*/
protected function typeUuid(Fluent $column)
{
return 'char(36)';
}
Это означает, что $table->uuid() будет переведен в столбец с типом данных char и его длиной будет 36 персонажи, всегда.
Laravel не генерирует UUID автоматически для столбцов uuid . Разработчик должен предоставить логику для создания идентификаторов UUID при вставке записей в базу данных.
Интересные факты о ramsey/uuid в контексте Laravel
- Этот пакет был впервые запрошен на 08 Август 2016 от Тейлора Отвелла когда он работал над уведомлениями о конкретных каналах. Идентификаторы UUID использовались для идентификации уведомлений базы данных.
- Ссылка на фиксацию от Тейлора Отвелла .
- Версия
~3.0изначально использовалась в Laravel v5.3 - Вспомогательные методы UUID были введены в Laravel v5.6.
- Ссылка на фиксацию от Тейлора Отвелла , который добавил вспомогательные методы
Надеюсь, вам понравился этот пост. Далее мы увидим, почему Laravel требует пакета swiftmailer/swiftmailer . Вы можете следовать за мной по Твиттер или присоединяйтесь к моей рассылке новостей для получения дополнительной информации.
Как Laravel использует сторонние пакеты (серия из 10 частей)
Оригинал: “https://dev.to/zubairmohsin33/why-laravel-requires-ramsey-uuid-package-3ed8”