bayfrontmedia / multi-filesystem

一个易于使用的库,用于从单个类中管理多个Flysystem适配器。

v1.0.0 2023-08-15 20:09 UTC

This package is auto-updated.

Last update: 2024-09-15 22:48:46 UTC


README

一个易于使用的库,用于从单个类中管理多个Flysystem适配器。

许可证

此项目为开源,可在MIT许可证下使用。

作者

Bayfront Media

需求

  • PHP ^8.0

安装

composer require bayfrontmedia/multi-filesystem

用法

注意:Multi-Filesystem 抛出的所有异常都扩展自 Bayfront\MultiFilesytstem\Exceptions\MultiFilesystemException,因此您可以按需选择捕获异常的范围。

必须将磁盘名称和 League\Flysystem\Filesystem 实例传递给构造函数,并将自动设置为默认磁盘。

为了在引用磁盘时保持一致性,Bayfront\MultiFilesystem\DiskName 类包含了对每个支持的Flysystem适配器的常量。

示例

use Bayfront\MultiFilesystem\Disk;
use Bayfront\MultiFilesystem\DiskName;
use League\Flysystem\Local\LocalFilesystemAdapter;
use League\Flysystem\Filesystem;

$local_adapter = new LocalFilesystemAdapter(__DIR__.'/root/directory/');
$local = new Filesystem($local_adapter);

$disk = new Disk(DiskName::LOCAL, $local);

公共方法

getNames

描述

返回磁盘名称数组。

参数

  • (无)

返回

  • (数组)

getDefaultName

描述

返回默认磁盘的名称。

参数

  • (无)

返回

  • (字符串)

add

描述

League\Flysystem\Filesystem 实例添加为新磁盘。

如果存在同名磁盘,它将被覆盖。

参数

  • $name (字符串):磁盘名称
  • $filesystem (对象):League\Flysystem\Filesystem 对象

返回

  • (self)

示例

use Aws\S3\S3Client;
use Bayfront\MultiFilesystem\DiskName;
use League\Flysystem\AwsS3V3\AwsS3V3Adapter;
use League\Flysystem\Filesystem;

$s3_client = new S3Client([ // Example connecting to Linode object storage
    'version' => 'latest',
    'region' => 'us-southeast-1',
    'endpoint' => 'https://us-southeast-1.linodeobjects.com',
    'credentials' =>
        [
            'key' => 'LINODE_ACCESS_KEY',
            'secret' => 'LINODE_SECRET_KEY',
        ],
]);

$bucket_name = 'NAME_OF_BUCKET';
$path_prefix = 'path/to/storage'; // No leading slash

$s3_adapter = new AwsS3V3Adapter($s3_client, $bucket_name, $path_prefix);
$s3 = new Filesystem($s3_adapter);

$disk->add(DiskName::AWS_S3, $s3);

exists

描述

磁盘名称是否存在?

参数

  • $disk (字符串)

返回

  • (布尔值)

示例

if ($disk->exists('local')) {
    // Do something
}

get

描述

返回给定磁盘的 League\Flysystem\Filesystem 实例。

参数

  • $disk = '' (字符串):要返回的磁盘名称。如果为空字符串,则返回默认磁盘。

返回

  • (对象):League\Flysystem\Filesystem 对象

抛出

  • Bayfront\MultiFilesystem\Exceptions\DiskNotFoundException

示例

try {

    $local_disk = $disk->get('local');

} catch (DiskNotFoundException $e) {
    die($e->getMessage());
}