webalternatif /flysystem-dsn-bundle
从DSN(数据源名称)构建Flysystem适配器的工具包。
Requires
- php: 8.0.* || 8.1.* || 8.2.* || 8.3.*
- psr/container: ^1.1 || ^2.0
- symfony/config: ^4.4 || ^5.3 || ^6.0
- symfony/dependency-injection: ^4.4 || ^5.3 || ^6.0
- symfony/http-kernel: ^4.4 || ^5.3 || ^6.0
- webalternatif/flysystem-composite: ^0.2.0
- webalternatif/flysystem-dsn: ^0.5.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.15
- infection/infection: ^0.26
- league/flysystem-aws-s3-v3: ^3.0
- league/flysystem-ftp: ^3.0
- league/flysystem-memory: ^3.0
- league/flysystem-sftp-v3: ^3.0
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^5.24
- webalternatif/flysystem-failover-bundle: ^0.4.0
- webalternatif/flysystem-openstack-swift: ^0.3.0
README
此工具包将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-bundle
和league/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-composite
的CompositeFilesystemAdapter
。否则,此工具包无法将它们注册,并且它们无法在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
这将运行Psalm、PHPUnit、Infection以及PHP-CS-Fixer检查,但您也可以单独运行它们,如下所示
composer psalm composer phpunit composer infection composer cs-check