本包最新版本(v1.0.0)没有提供许可证信息。

v1.0.0 2023-08-16 15:28 UTC

README

欢迎使用 CloudZ 库

CloudZ 是一个旨在简化与云服务交互的通用且直观的库。

CloudZ 策略

  • FTP
  • SFTP
  • AWS S3

安装说明

CloudZ 库可在 Composer 管理的包中使用,要使用它,请运行以下命令

composer require somasolucoes/cloudz

PHP 中 CloudZ 库的初始化指南

初始配置

在开始使用 CloudZ 库之前,需要创建 JSON 文件以提供不同云服务的配置信息。请按照以下步骤操作

  1. 在项目根目录下创建一个名为 .cloudz 的文件夹。
  2. .cloudz 文件夹中,为打算使用的每个云服务创建单独的 JSON 文件,按照以下命名规范
    • ftp.json
    • aws-s3.json

FTP/SFTP 配置

.cloudz 文件夹中创建一个 ftp.json 文件,包含登录 FTP 或 SFTP 账户所需的信息。使用以下 JSON 格式

{
    "FTPAccount": 
        {
            "code": 1,
            "host": "192.168.0.0",
            "port": 21/22,
            "user": "admin",
            "password": "123",
            "isPassive": "S/N",
            "dirWork": "/example",
            "urlAcess": "http://example",
            "useSSH": "S/N"
        }
}

AWS S3 配置

.cloudz 文件夹中创建一个 aws-s3.json 文件,包含登录 Amazon S3 账户所需的信息。使用以下 JSON 格式

{
    "AWSS3Account": 
    {
        "code": 1,
        "AWSKey": "B54CAB3F16A6CB378AEE5E1132B225F2",
        "AWSSecretKey": "5918933c23ef6c8ee8e3a96807654b3d",
        "AWSRegion": "us-east-1",
        "AWSType": "S3",
        "bucketName": "imagens/vídeos"
    }
}

为了支持向多个账户上传文件,您可以在 JSON 文件中创建账户列表。以下是一些示例

FTP/SFTP 多账户配置

.cloudz 文件夹中创建一个 ftp.json 文件,并使用 JSON 数组配置多个账户

{
    "FTPAccount": [
        {
            "code": 1,
            "host": "192.168.0.0",
            ...
        },
        {
            "code": 2,
            "host": "192.168.0.1",
            ...
        }
    ]
}

AWS S3 多账户配置

.cloudz 文件夹中创建一个 aws-s3.json 文件,并使用 JSON 数组配置多个账户

{
    "AWSS3Account": [
    {
        "code": 1,
        "AWSKey": "B54CAB3F16A6CB378AEE5E1132B225F2",
        ...
    },{
        "code": 2,
        "AWSKey": "B54CAB3F16A6CB378AEE5E1132B225F2",
        ...
    }]
}

开始使用

配置完成后,要开始使用 CloudZ,需要实例化 CloudService 类。它需要两个参数。

  1. 您要连接的云服务类型;
  2. 您要访问的云服务账户的引用代码(此代码将在 .cloudz 目录中的一个 JSON 文件中标识配置的账户)。
$cloudServiceType = 'tipo_servico';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);

以下是可用的服务类型列表

  • 'FTP'
  • 'AWS-S3'

示例

$cloudServiceType = 'FTP';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);

也可以使用库提供的常量来指定服务类型。以下是服务类型常量的列表

  • FTP_ACCOUNT
  • AWS_S3_ACCOUNT

示例

$cloudServiceType = CloudServiceTypes::FTP_ACCOUNT;
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);

提供这些参数后,您就可以开始使用库,并使用单一结构与不同的云服务进行交互。

配置

要添加配置,请使用以下命令

$cloudServiceType = 'tipo_servico';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
$cloudService->settings->add('key example', value example);

CloudService 类允许一些可选配置

  • canEncryptName: 允许在发送文件时加密文件名(布尔值 true/false);
  • canDeleteAfterUpload: 允许在本地上传后删除保存的文件(布尔值 true/false);
  • path: 允许在云中创建或访问特定目录(字符串值)。

如果您想按照某种模式保持云中的组织结构,CloudZ 库提供了目录“工具”。这个工具提供了一种关注于项目解决方案的标准化模式,可以通过传递三个字符串参数(根目录、解决方案名称和模块名称)来使用。对于外部项目集成,目录工具只需要两个参数(根目录和集成名称)。这个工具可以通过静态方法访问,这有助于在项目中使用。

示例

$mountSolutionPath = CloudServicePathUtility::mountSolutionPath('root', 'solutionName', 'module');
//Resultado de CloudServicePathUtility::mountSolutionPath: 'root/solucoes/solutionName/module'
$mountIntegrationPath = CloudServicePathUtility::mountIntegrationPath('root', 'integrationName');
//Resultado de CloudServicePathUtility::mountIntegrationPath: 'root/integracoes/integrationName'

$cloudServiceType = 'tipo_servico';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);
$cloudService->settings->add('path', $mountSolutionPath);

使用此功能,您可以保持不同云服务中的结构化组织,使文件和项目的定位更加容易。

文件准备

在进行上传或删除等操作之前,需要准备要发送的文件。为此,需要实例化CloudServiceFile类,将所需文件的本地路径作为参数传递。

$filePath = 'C:\Documents\example.txt'
$file = new CloudServiceFile($filePath);

上传

要执行上传操作,只需使用CloudService实例的"upload"方法,将之前由CloudServiceFile类准备的文件作为参数传递。

$cloudServiceType = 'tipo_servico';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);

$filePath = 'C:\Documents\example.txt'
$file = new CloudServiceFile($filePath);

$cloudService->upload($file);

使用upload方法时,库返回一个包含对用户有用的信息的响应对象。如果成功,将返回代码200,并附带一个允许访问已发送文件的URL。如果发生错误,将返回代码400,并附带解释错误原因的消息。

删除

要执行删除操作,只需使用CloudService实例的"delete"方法,将之前由CloudServiceFile类准备的文件作为参数传递。

$cloudServiceType = 'tipo_servico';
$cloudServiceAccountCode = 1;
$cloudService = new CloudService($cloudServiceType, $cloudServiceAccountCode);

$filePath = 'C:\Documents\example.txt'
$file = new CloudServiceFile($filePath);

$cloudService->delete($file);

使用delete方法时,库返回一个包含对用户有用的信息的响应对象。如果成功,将返回代码200,并附带成功消息。如果发生错误,将返回代码400,并附带解释错误原因的消息。