• Время чтения ~1 мин
  • 04.12.2022

Transformer — это PHP-пакет для очистки и форматирования данных, основанный на компонентах проверки Laravel. Пакет использует знакомый синтаксис Laravel, похожий на проверку, для преобразования данных с помощью вызываемых функций, классов и многого другого:

use Closure;
 
// example available functions at runtime:
function to_carbon($value)
{
    return new Carbon\Carbon($value);
}
 
function only_numbers($value)
{
    return preg_replace("/[^0-9]/",'',$value);
}
 
$input = [
  'first_name' => '    jim    ',
  'last_name' => '   thompson',
  'phone_number' => '123-456-7890',
  'date_of_birth' => "1991-05-01",
];
 
(new DataTransformer($input, [
    'first_name' => 'trim|ucfirst',
    'last_name' => 'trim|ucfirst',
    'phone_number' => 'only_numbers',
    'date_of_birth' => 'to_carbon|->format:m/d/y',
]))->transform();
 
// Returns:
// [
//     "first_name" => "Jim",
//     "last_name" => "Thompson",
//     "phone_number" => "1234567890",
//     "date_of_birth" => "05/01/91",
// ]

Те, кто знаком с API проверки Laravel, заметят правила преобразования на основе строк. Кроме того, как видно из фрагмента кода, этот пакет имеет «цепной» синтаксис (to_carbon|->формат:м/д/г), которые могут связывать дополнительные вызовы с фрагментом данных.

Вы также можете преобразовать данные, используя замыкания или класс, реализующий предоставленный трансформируемый интерфейс. Кроме того, этот пакет поддерживает данные вложенных массивов с использованием точечной записи, вводов с подстановочными знаками (применяет функции к ключам, соответствующим шаблону с подстановочными знаками) и т. д.

Вы можете узнать больше об этом пакете, получить полные инструкции по установке и просмотреть исходный код на Гитхабе.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297