Передать все элементы массива в метод класса
Есть такой класс, который после конвертации импортирует данные в другой класс методом execute(), и конвертеров может быть несколько (массив $converters). У меня получается передать только один конвертер в метод, по его ключу. А как передать все ?
class Import
{
private $reader;
private $writer;
private $converters = [];
public function from(Reader $reader)
{
$this->reader = $reader;
return $this;
}
public function to(Writer $writer)
{
$this->writer = $writer;
return $this;
}
public function with(Converter $converter)
{
$this->converters[] = $converter;
return $this;
}
public function execute()
{
$toWrite = $this->converters[0]->convert($this->reader->read());
$this->writer->write($toWrite);
}
}
$importer = new Import();
$importer->from(new ArrayReader());
$importer->to(new FileWriter());
$importer->with(new UpperCaseConverter());
$importer->with(new LowerCaseConverter());
$importer->execute();
Ответы (1 шт):
Автор решения: teran
→ Ссылка
Если несколько, то замените один вызов на цикл
public function execute(){
$result = $this->reader->read();
foreach($this->converters as $c){
$result = $c->convert($result);
}
$this->writer->write($result);
}