PHP code example of 3slab / vdm-library-ftp-transport-bundle
1. Go to this page and download the library: Download 3slab/vdm-library-ftp-transport-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
3slab / vdm-library-ftp-transport-bundle example snippets
namespace App\FtpExecutor;
use Psr\Log\LoggerInterface;
use Symfony\Component\Messenger\Envelope;
use Vdm\Bundle\LibraryBundle\Model\Message;
use Vdm\Bundle\LibraryFtpTransportBundle\Executor\AbstractFtpExecutor;
use Vdm\Bundle\LibraryBundle\Stamp\StopAfterHandleStamp;
class CustomFtpExecutor implements AbstractFtpExecutor
{
/**
* @var LoggerInterface
*/
private $logger;
public function __construct(LoggerInterface $logger)
{
parent::__construct();
$this->logger = $logger;
}
public function execute(array $files): iterable
{
$files = array_filter($files, function($file) {
return (isset($file['type']) && $file['type'] === 'file');
});
foreach ($files as $key => $file) {
$file = $this->ftpClient->get($file);
$message = new Message($file);
yield $this->getEnvelope($files, $key, $message);
}
yield new Envelope(new Message(""), [new StopAfterHandleStamp()]);
}
private function getEnvelope(array $files, int $key, Message $message): Envelope
{
$stamps = [];
// Put the stop stamp on the last file
if (array_key_last($files) === $key) {
$stamps = [new StopAfterHandleStamp()];
}
return new Envelope($message, $stamps);
}
}