webalternatif / flysystem-dsn
一组用于从DSN(数据源名称)构建Flysystem适配器的工厂
v0.5.1
2024-05-06 14:12 UTC
Requires
- php: 8.0.* || 8.1.* || 8.2.* || 8.3.*
- league/flysystem: ^3.0
- nyholm/dsn: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- infection/infection: ^0.24.0
- league/flysystem-aws-s3-v3: ^3.0
- league/flysystem-ftp: ^3.0
- league/flysystem-memory: ^3.0
- league/flysystem-sftp-v3: ^3.0
- php-opencloud/openstack: ^3.2
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^5.24
- webalternatif/flysystem-failover-bundle: ^0.4.0
- webalternatif/flysystem-openstack-swift: ^0.3.0
Suggests
- league/flysystem-aws-s3-v3: To use AwsS3AdapterFactory
- league/flysystem-ftp: To use FtpAdapterFactory
- league/flysystem-memory: To use InMemoryAdapterFactory
- league/flysystem-sftp-v3: To use SftpAdapterFactory
- webalternatif/flysystem-failover-bundle: To use FailoverAdapterFactory
- webalternatif/flysystem-openstack-swift: To use OpenStackSwiftAdapterFactory
README
一组用于从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_fget
和ftp_fput
调用的传输模式(必须是ascii
或binary
,默认:binary
)system_type
:FTP服务器的系统类型(必须是unix
或windows
)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
:自动创建目录的默认可见性(必须是public
或private
,默认:private
)
内存
可选的DSN参数
default_visibility
:创建的文件和目录的默认可见性(必须是public
或private
,默认: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
:自动创建目录的默认可见性(必须是public
或private
,默认: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_id
和user_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
:自动创建目录的默认可见性(必须是public
或private
,默认:private
)
测试
要运行所有测试,执行以下命令
composer test
这将运行 Psalm、PHPUnit、Infection 和 PHP-CS-Fixer 检查,但您也可以单独运行它们,如下所示
composer psalm composer phpunit composer infection composer cs-check