webalternatif/flysystem-dsn-bundle

从DSN(数据源名称)构建Flysystem适配器的工具包。

v0.5.2 2024-05-06 14:51 UTC

This package is auto-updated.

Last update: 2024-09-06 15:44:58 UTC


README

Source code Packagist Version Software license GitHub issues
Test status Psalm coverage Psalm level Infection MSI

此工具包将Flysystem DSN库与Symfony集成,允许使用配置中的DSN创建适配器服务。

安装

请确保已全局安装Composer,如Composer文档中的安装章节所述。

使用Symfony Flex的应用程序

打开命令行,进入您的项目目录并执行以下命令:

composer require webalternatif/flysystem-dsn-bundle

不使用Symfony Flex的应用程序

步骤1:下载工具包

打开命令行,进入您的项目目录并执行以下命令以下载此工具包的最新稳定版本:

composer require webalternatif/flysystem-dsn-bundle

步骤2:启用工具包

然后,通过将其添加到项目config/bundles.php文件中注册的工具包列表来启用工具包。

// config/bundles.php

return [
    // ...
    Webf\Flysystem\DsnBundle\WebfFlysystemDsnBundle::class => ['all' => true],
];

用法

适配器在webf_flysystem_dsn.adapters Symfony配置路径下配置,然后作为具有webf_flysystem_dsn.adapter.{name} id的服务可用。

webf_flysystem_dsn:
    adapters:
        adapter1: '%env(STORAGE1_DSN)%' # service: webf_flysystem_dsn.adapter.adapter1
        adapter2: '%env(STORAGE2_DSN)%' # service: webf_flysystem_dsn.adapter.adapter2

除了来自webalternatif/flysystem-dsn的可用适配器外,此工具包还提供了一个特定于Symfony的DSN service://service_id,您必须提供引用外部服务(必须是Flysystem适配器)的标识符。如果您已经有了适配器服务,并希望将它们注入到组合适配器(如failover)中,则可能很有用:failover(service://external_service_id ...)

与Flysystem工具包的集成

如上所述,此工具包仅提供Flysystem适配器的服务,但它们不能直接使用。通常,您需要使用另一个提供FilesystemOperator实例的工具包。

两个最著名的工具包是oneup/flysystem-bundleleague/flysystem-bundle。以下是这两个工具包的配置示例(考虑到上述webf_flysystem_dsn配置)。

oneup/flysystem-bundle

oneup_flysystem:
    adapters:
        adapter1:
            custom:
                service: webf_flysystem_dsn.adapter.adapter1
        adapter2:
            custom:
                service: webf_flysystem_dsn.adapter.adapter2

    filesystems:
        storage1:
            adapter: adapter1
        storage2:
            adapter: adapter2

league/flysystem-bundle

flysystem:
    storages:
        storage1:
            adapter: webf_flysystem_dsn.adapter.adapter1
        storage2:
            adapter: webf_flysystem_dsn.adapter.adapter2

webalternatif/flysystem-failover-bundle的集成

如果已安装webalternatif/flysystem-failover-bundle,则failover DSN功能将可用,并且所有配置的故障转移适配器都已注册,以便可以在webf:flysystem-failover:* Symfony命令中使用。

failover DSN功能嵌套在其他功能中

为了将failover DSN功能用作其他DSN功能的参数,由相应工厂创建的适配器必须实现来自webalternatif/flysystem-compositeCompositeFilesystemAdapter。否则,此工具包无法将它们注册,并且它们无法在webf:flysystem-failover:* Symfony命令中使用。

使用您自己的DSN

如果您想使用自己的DSN来构建自己的Flysystem适配器,您可以创建一个实现Webf\Flysystem\Dsn\FlysystemAdapterFactoryInterface的适配器工厂服务。

要注册工厂,您可以选择启用自动配置,或者使用标签webf_flysystem_dsn.adapter_factory标记您的服务(在PHP中也可以使用Webf\Flysystem\DsnBundle\DependencyInjection\WebfFlysystemDsnExtension::ADAPTER_FACTORY_TAG_NAME)。

测试

要运行所有测试,请执行以下命令

composer test

这将运行PsalmPHPUnitInfection以及PHP-CS-Fixer检查,但您也可以单独运行它们,如下所示

composer psalm
composer phpunit
composer infection
composer cs-check