/** * Creates a Memory adapter from a Flysystem filesystem. * * @param FilesystemInterface $filesystem The Flysystem filesystem. * * @return self A new memory adapter. */ public static function createFromFilesystem(FilesystemInterface $filesystem) { $filesystem->addPlugin(new ListWith()); $adapter = new static(); $config = new Config(); foreach ($filesystem->listWith(['timestamp', 'visibility'], '', true) as $meta) { if ($meta['type'] === 'dir') { $adapter->createDir($meta['path'], $config); continue; } $adapter->write($meta['path'], (string) $filesystem->read($meta['path']), $config); $adapter->setVisibility($meta['path'], $meta['visibility']); $adapter->setTimestamp($meta['path'], $meta['timestamp']); } return $adapter; }