interface Extractor
{
public function extract(): array;
}
class MyObject
{
public $a;
}
class MyOtherObject
{
public $a, $b, $c;
}
class MyObjectExtractor implements Extractor
{
private $object;
public function __construct(MyObject $object)
{
$this->object = $object;
}
public function extract(): array
{
return [
'a' => $this->object->a,
];
}
}
class MyOtherObjectExtractor implements Extractor
{
private $object;
public function __construct(MyOtherObject $object)
{
$this->object = $object;
}
public function extract(): array
{
return [
'a-b' => $this->object->a . $this->object->b,
'c' => $this->object->c->toArray(),
];
}
}
мне удобнее добавить к текущему методу дополнительный map для выделения словНу, это уже вопрос организации кода. Никто же не мешает мой код выделить в метод и передать этот метод в map.
очень затратный, ведь DOM штука медленнаяВот тут вы заблуждаетесь. Затратно и медленно работать с большими деревьями, которые добавлены в основной документ. В данном случае они точно не рендерятся на странице и, как я понимаю, не являются очень большими.
Например, проверка можно ли использовать такое-то имя или оно уже есть в базе.Так это же тоже через стандартную валидацию делается.