PHP code example of tobento / service-file-storage
1. Go to this page and download the library: Download tobento/service-file-storage 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/ */
use Tobento\Service\FileStorage\FilesInterface;
$files = $storage->with('stream', 'mimeType')->files(
path: 'folder',
recursive: false // is default
);
var_dump($files instanceof FilesInterface);
// bool(true)
use Tobento\Service\FileStorage\FileException;
try {
$storage->delete(path: 'folder/image.jpg');
} catch (FileException $e) {
// could not delete file
}
use Tobento\Service\FileStorage\FileException;
try {
$storage->move(from: 'old/image.jpg', to: 'new/image.jpg');
} catch (FileException $e) {
// could not move file
}
use Tobento\Service\FileStorage\FileException;
try {
$storage->copy(from: 'old/image.jpg', to: 'new/image.jpg');
} catch (FileException $e) {
// could not copy file
}
$file = $storage
->with(
'stream',
'mimeType',
'size', // not needed if stream is set as it can get size from stream.
'width', 'height', // ignored if not image.
'lastModified',
'url',
'visibility',
)
->file(path: 'folder/image.jpg');
$stream = $file->stream();
$mimeType = $file->mimeType();
$size = $file->size();
$width = $file->width();
$height = $file->height();
$lastModified = $file->lastModified();
$url = $file->url();
$visibility = $file->visibility();
use Tobento\Service\FileStorage\FolderException;
try {
$storage->createFolder(path: 'folder/name');
} catch (FolderException $e) {
// could not create folder
}
use Tobento\Service\FileStorage\FoldersInterface;
$folders = $storage->folders(
path: '',
recursive: false // is default
);
var_dump($folders instanceof FoldersInterface);
// bool(true)
use Tobento\Service\FileStorage\FolderException;
try {
$storage->deleteFolder(path: 'folder/name');
} catch (FolderException $e) {
// could not delete folder
}
use Tobento\Service\FileStorage\Visibility;
$storage->setVisibility(
path: 'folder/image.jpg',
visibility: Visibility::PRIVATE // or Visibility::PUBLIC
);
use Tobento\Service\FileStorage\Storages;
use Tobento\Service\FileStorage\StoragesInterface;
$storages = new Storages();
var_dump($storages instanceof StoragesInterface);
// bool(true)
use Tobento\Service\FileStorage\StorageInterface;
$storages->add($storage); // StorageInterface
use Tobento\Service\FileStorage\StorageInterface;
use Tobento\Service\FileStorage\StorageException;
$storage = $storages->get('name');
var_dump($storage instanceof StorageInterface);
// bool(true)
$storages->get('unknown');
// throws StorageException
var_dump($storages->has('name'));
// bool(false)
use Tobento\Service\FileStorage\Storages;
use Tobento\Service\FileStorage\StorageInterface;
use Tobento\Service\FileStorage\StorageException;
$storages = new Storages();
// add "locale" storage:
$storages->add($storage);
// add default:
$storages->addDefault(name: 'primary', storage: 'local');
// get default storage for the specified name.
$primaryStorage = $storages->default('primary');
var_dump($primaryStorage instanceof StorageInterface);
// bool(true)
var_dump($storages->hasDefault('primary'));
// bool(true)
var_dump($storages->getDefaults());
// array(1) { ["primary"]=> string(5) "local" }
$storages->default('unknown');
// throws StorageException
use Tobento\Service\FileStorage\Flysystem;
use Tobento\Service\FileStorage\StorageInterface;
use Nyholm\Psr7\Factory\Psr17Factory;
$filesystem = new \League\Flysystem\Filesystem(
adapter: new \League\Flysystem\Local\LocalFilesystemAdapter(
location: __DIR__.'/root/directory/'
)
);
$storage = new Flysystem\Storage(
name: 'local',
flysystem: $filesystem,
fileFactory: new Flysystem\FileFactory(
flysystem: $filesystem,
streamFactory: new Psr17Factory()
),
);
var_dump($storage instanceof StorageInterface);
// bool(true)
use Tobento\Service\FileStorage\NullStorage;
use Tobento\Service\FileStorage\StorageInterface;
$storage = new NullStorage(name: 'null');
var_dump($storage instanceof StorageInterface);
// bool(true)
use Tobento\Service\FileStorage\ReadOnlyStorageAdapter;
use Tobento\Service\FileStorage\StorageInterface;
$storage = new ReadOnlyStorageAdapter(
storage: $storage, // StorageInterface
// You may throw exeptions if files are not found
// otherwise an "empty" file is returned.
throw: true, // false is default
);
var_dump($storage instanceof StorageInterface);
// bool(true)
use Tobento\Service\FileStorage\StorageFactoryInterface;
use Tobento\Service\FileStorage\StorageInterface;
use Tobento\Service\FileStorage\StorageException;
interface StorageFactoryInterface
{
/**
* Create a new Storage based on the configuration.
*
* @param string $name Any storage name.
* @param array $config Configuration data.
* @return StorageInterface
* @throws StorageException
*/
public function createStorage(string $name, array $config = []): StorageInterface;
}
use Tobento\Service\FileStorage\FileInterface;
foreach($files->all() as $file) {
var_dump($file instanceof FileInterface);
// bool(true)
}
// or just
foreach($files as $file) {}
use Tobento\Service\FileStorage\FolderInterface;
foreach($storage->folders(path: 'foo') as $folder) {
var_dump($folder instanceof FolderInterface);
// bool(true)
}
use Tobento\Service\FileStorage\FolderInterface;
$folder = $folders->first();
// null|FolderInterface
use Tobento\Service\FileStorage\FolderInterface;
$folder = $folders->get(path: 'foo');
// null|FolderInterface
use Tobento\Service\FileStorage\FolderInterface;
foreach($folders->all() as $folder) {
var_dump($folder instanceof FolderInterface);
// bool(true)
}
// or just
foreach($folders as $folder) {}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.