Подключение к клиентским ftp серверам осуществляется с помощью двух классов FtpConnection и SftpConnection
Для подключения необходимо получить сервис exchange.connection.ftp
или exchange.connection.sftp
Данное дробление необходимо, чтобы отделить разные по реализации соединения, из-за чего весь код в 1 классе содержал бы слишком много условий и кода, который сложен к тестированию.
Проблема состоит в том, что если подключить класс FtpConnection - невозможно угадать, у все ли пользователей будет именно FTP протокол. Поэтому с помощью механизма конфигураций каждый из соединений имеет настройку протокола, которая позволяет пользователю выбирать между FTP\SFTP протоколом.
Поэтому какой класс подключать совершенно неважно, пользователь сможет переключить "налету".
На вход оба соединения принимают FtpRequestInterface
реализованный в классе FtpRequest.
Это означает, что на этапе форматирования необходимо сформировать именно FtpRequest
# Пример создания запроса на сохранение csv файла из бизнес модели
return new FtpRequest($this->getConfigValue(self::CONFIG_FILE_PATH), $fileName, $data);