<?php
declare(strict_types=1);
interface Hydrator
{
public function hydrate($incoming, $model) : string;
}
interface ContextualHydratorExtension extends Hydrator
{
public function hydrate($incoming, $model, $context = null) : string;
}
interface ContextualHydrator
{
public function hydrateWithContext($incoming, $model, $context = null) : string;
}
class PlsContextHydrator implements Hydrator, ContextualHydratorExtension, ContextualHydrator
{
public function hydrate($incoming, $model, $context = null) : string
{
$args_format = rtrim(str_repeat('\'%s\', ', func_num_args()), ', ');
$args_formatted = sprintf($args_format, ...func_get_args());
return sprintf("%s(%s)", __METHOD__, $args_formatted);
}
public function hydrateWithContext($incoming, $model, $context = null) : string
{
return $this->hydrate($incoming, $model, $context);
}
}
$hydrator = new PlsContextHydrator();
var_dump(
$hydrator->hydrate('nah', 'maybes', 'whatever')
);
preferences:
68.85 ms | 402 KiB | 5 Q