Передать все элементы массива в метод класса

Есть такой класс, который после конвертации импортирует данные в другой класс методом 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);
}
→ Ссылка