webalternatif/flysystem-dsn

一组用于从DSN(数据源名称)构建Flysystem适配器的工厂

v0.5.1 2024-05-06 14:12 UTC

This package is auto-updated.

Last update: 2024-09-06 14:50:28 UTC


README

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

一组用于从DSN构建Flysystem适配器的工厂。

安装

$ composer require webalternatif/flysystem-dsn

由于此包没有明确要求内部适配器,您将需要在项目中自行使用 composer require 安装它们。
请参阅适配器部分以了解如何安装它们。

使用方法

use Webf\Flysystem\Dsn\AwsS3AdapterFactory;
use Webf\Flysystem\Dsn\FlysystemAdapterFactory;
use Webf\Flysystem\Dsn\OpenStackSwiftAdapterFactory;

$factory = new FlysystemAdapterFactory([
    new AwsS3AdapterFactory(),
    new OpenStackSwiftAdapterFactory(),
]);

$adapter = $factory->createAdapter($dsn);

适配器

AWS S3

  • 如果端点不支持https,请使用 s3+http://
  • s3:// 等同于 s3+https://

可选的DSN参数

  • version(默认:latest

故障转移

  • 故障转移DSN功能必须至少有2个DSN参数。
  • name参数用于故障转移适配器在故障转移包中的名称(用于在Symfony命令中识别适配器)。
  • 对于每个内部DSN,您可以指定一个time_shift参数(有关更多信息,请参阅故障转移包的配置部分)。此参数在构建内部DSN时从内部DSN中删除。

Ftp

  • 端口号是可选的,默认为21
  • 如果路径包含空格,则将其替换为%20

可选的DSN参数

  • ssl:是否使用ftp_ssl_connect而不是ftp_connect(默认:false
  • timeout:所有后续网络操作的超时时间(默认:90
  • utf8:是否启用UTF-8模式(默认:false
  • passive:是否启用被动模式(默认:true
  • transfer_mode:用于ftp_fgetftp_fput调用的传输模式(必须是asciibinary,默认:binary
  • system_type:FTP服务器的系统类型(必须是unixwindows
  • ignore_passive_address:是否将FTP_USEPASVADDRESS选项设置为相反值
  • timestamps_on_unix_listings:是否在Unix系统中为元数据设置最后修改时间(默认:false
  • recurse_manually:当listContents()$deep参数设置为true时,是否“手动”递归目录,而不是使用FTP选项(默认:false
  • public_file_permission:公共文件的Unix权限(默认:0644
  • private_file_permission:私有文件的Unix权限(默认:0600
  • public_dir_permission:公共目录的Unix权限(默认:0755
  • private_dir_permission:私有目录的Unix权限(默认:0700
  • default_dir_visibility:自动创建目录的默认可见性(必须是publicprivate,默认:private

内存

可选的DSN参数

  • default_visibility:创建的文件和目录的默认可见性(必须是publicprivate,默认:public

本地

  • 如果路径包含空格,则将其替换为%20

可选的DSN参数

  • public_file_permission:公共文件的Unix权限(默认:0644
  • private_file_permission:私有文件的Unix权限(默认:0600
  • public_dir_permission:公共目录的Unix权限(默认:0755
  • private_dir_permission:私有目录的Unix权限(默认:0700
  • default_dir_visibility:自动创建目录的默认可见性(必须是publicprivate,默认:private

OpenStack Swift

  • 如果端点不支持https,请使用 swift+http://
  • swift:// 等同于 swift+https://
  • 如果存在参数 user_id,则 username 是可选的。

可选的DSN参数

  • user_id:发送到 Keystone v3 API 的 auth.identity.password.user.id
  • user_domain_id:发送到 Keystone v3 API 的 auth.identity.password.user.domain.id 值(默认:如果未定义 user_iduser_domain_name,则为 default
  • user_domain_name:发送到 Keystone v3 API 的 auth.identity.password.user.domain.name
  • domain_id:发送到 Keystone v3 API 的 auth.scope.domain.id
  • domain_name:发送到 Keystone v3 API 的 auth.scope.domain.name
  • project_id:发送到 Keystone v3 API 的 auth.scope.project.id
  • project_name:发送到 Keystone v3 API 的 auth.scope.project.name
  • project_domain_id:发送到 Keystone v3 API 的 auth.scope.project.domain.id
  • project_domain_name:发送到 Keystone v3 API 的 auth.scope.project.domain.name

Sftp

  • 如果定义了 private_key 参数,密码可以为空。
  • 端口是可选的,默认为 22
  • 如果路径包含空格,则将其替换为%20

可选的DSN参数

  • private_key:私钥文件的绝对路径,可以代替密码使用
  • passphrase:私钥的密码短语
  • use_agent:是否使用 ssh agent(默认:false
  • timeout:请求的超时时间(秒)(默认:10
  • max_retries:在触发错误之前重试连接的次数(默认:4
  • host_fingerprint:要检查的主机指纹
  • public_file_permission:公共文件的Unix权限(默认:0644
  • private_file_permission:私有文件的Unix权限(默认:0600
  • public_dir_permission:公共目录的Unix权限(默认:0755
  • private_dir_permission:私有目录的Unix权限(默认:0700
  • default_dir_visibility:自动创建目录的默认可见性(必须是publicprivate,默认:private

测试

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

composer test

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

composer psalm
composer phpunit
composer infection
composer cs-check