Skip to content

Latest commit

 

History

History
30 lines (20 loc) · 2.27 KB

FTPConnection.md

File metadata and controls

30 lines (20 loc) · 2.27 KB

FTP\SFTP

Подключение к клиентским ftp серверам осуществляется с помощью двух классов FtpConnection и SftpConnection

Для подключения необходимо получить сервис exchange.connection.ftp или exchange.connection.sftp

Разделение одного функционала на 2 класса

Данное дробление необходимо, чтобы отделить разные по реализации соединения, из-за чего весь код в 1 классе содержал бы слишком много условий и кода, который сложен к тестированию.

Смена протокола пользователем

Проблема состоит в том, что если подключить класс FtpConnection - невозможно угадать, у все ли пользователей будет именно FTP протокол. Поэтому с помощью механизма конфигураций каждый из соединений имеет настройку протокола, которая позволяет пользователю выбирать между FTP\SFTP протоколом.

Поэтому какой класс подключать совершенно неважно, пользователь сможет переключить "налету".

Запрос

На вход оба соединения принимают FtpRequestInterface реализованный в классе FtpRequest. Это означает, что на этапе форматирования необходимо сформировать именно FtpRequest

# Пример создания запроса на сохранение csv файла из бизнес модели
return new FtpRequest($this->getConfigValue(self::CONFIG_FILE_PATH), $fileName, $data);