Класс CallbackTransformer
Класс CallbackTransformer используется в компоненте Valid
для преобразования данных между различными представлениями.
Он принимает две callback-функции: первую для прямого
преобразования, вторую для обратного. Первый callback
вызывается при преобразовании исходного значения, второй -
при обратном преобразовании.
Синтаксис
<?php
use Symfony\Component\Validator\CallbackTransformer;
$transformer = new CallbackTransformer(
$transformCallback,
$reverseTransformCallback
);
?>
Пример
Давайте создадим трансформер, который переводит строку в верхний регистр и обратно:
<?php
namespace App\Service;
use Symfony\Component\Validator\CallbackTransformer;
class TransformerService
{
public function transform(): string
{
$transformer = new CallbackTransformer(
fn (string $value): string => strtoupper($value),
fn (string $value): string => strtolower($value)
);
return $transformer->transform('abcde');
}
}
?>
Результат выполнения кода:
"ABCDE"
Пример
Давайте выполним обратное преобразование с помощью метода
reverseTransform:
<?php
namespace App\Service;
use Symfony\Component\Validator\CallbackTransformer;
class TransformerService
{
public function reverseTransform(): string
{
$transformer = new CallbackTransformer(
fn (string $value): string => strtoupper($value),
fn (string $value): string => strtolower($value)
);
return $transformer->reverseTransform('ABCDE');
}
}
?>
Результат выполнения кода:
"abcde"
Пример
Давайте применим трансформер к массиву значений
с помощью функции array_map:
<?php
namespace App\Service;
use Symfony\Component\Validator\CallbackTransformer;
class TransformerService
{
public function transformArray(): array
{
$transformer = new CallbackTransformer(
fn (string $value): string => strtoupper($value),
fn (string $value): string => strtolower($value)
);
$res = array_map(
fn (string $value): string => $transformer->transform($value),
['abcde', 'article', 'user', 'hello']
);
return $res;
}
}
?>
Результат выполнения кода:
["ABCDE", "ARTICLE", "USER", "HELLO"]
Смотрите также
-
класс
Validator,
который выполняет валидацию объектов -
метод
transform,
который выполняет прямое преобразование значения -
метод
reverseTransform,
который выполняет обратное преобразование значения -
класс
Validation,
который предоставляет точку входа в компонент Valid