/** * Creates an FTP instance * * @return FTP An FTP instance */ public function build(ConnectionInterface $connection) { if (!$connection->isConnected()) { $connection->open(); } if (null === $this->wrapper) { $this->wrapper = new FTPWrapper($connection); } if (null === $this->manager) { if (null === $this->fsFactory) { $this->fsFactory = new FilesystemFactory(new PermissionsFactory()); } $this->manager = new FTPFilesystemManager($this->wrapper, $this->fsFactory); } if (null === $this->dlVoter) { $this->dlVoter = new DownloaderVoter(); $this->dlVoter->addDefaultFTPDownloaders($this->wrapper); } if (null === $this->ulVoter) { $this->ulVoter = new UploaderVoter(); $this->ulVoter->addDefaultFTPUploaders($this->wrapper); } if (null === $this->crVoter) { $this->crVoter = new CreatorVoter(); $this->crVoter->addDefaultFTPCreators($this->wrapper, $this->manager); } if (null === $this->deVoter) { $this->deVoter = new DeleterVoter(); $this->deVoter->addDefaultFTPDeleters($this->wrapper, $this->manager); } return new FTP($this->manager, $this->dlVoter, $this->ulVoter, $this->crVoter, $this->deVoter); }