# moyu-cloud-encrypt
**Repository Path**: moleft/moyu-cloud-encrypt
## Basic Information
- **Project Name**: moyu-cloud-encrypt
- **Description**: moyu-cloud-encryp可以通过Composer添加到你的项目中,为你的项目提供快捷简单的php文件加密服务
- **Primary Language**: PHP
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://encode.phpth.cn
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-04-14
- **Last Updated**: 2022-05-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: PHP, Composer
## README
# moyu-cloud-encrypt
本composer包基于 陌屿云加密([encode.phpth.cn](https://encode.phpth.cn)) 开发
一个优雅、使用简单、易于拓展的云加密类库
## 使用方法
### 使用Composer安装
```shell
composer require moleft/moyu-cloud-encrypt
```
### 引入autoload
```php
include __DIR__'/vendor/autoload.php';
```
### 检查是否支持某种加密方式
```php
use Moyu\CloudEncrypt\Driver;
$result = Driver::support('sg11');
var_dump($result); // true
```
### 初始化加密
```php
use Moyu\CloudEncrypt\Driver;
// 设置核心参数
$config = [
'user' => '',
'pass' => '',
'apikey'=> ''
];
// 首次使用 Driver 创建加密实例时需要调用 setConfig
$driver = Driver::setConfig($config)->getInstance('sg11');
// 切换加密实例不需要调用 setConfig
$driver = Driver::getInstance('goto');
```
### 使用Try...Catch捕获异常
```php
use Moyu\CloudEncrypt\CloudEncryptException;
use Moyu\CloudEncrypt\Driver;
try{
// 设置核心参数
$config = [
'user' => '',
'pass' => '',
'apikey'=> ''
];
// 创建加密实例
$driver = Driver::setConfig($config)->getInstance('sg11');
// TODO 加密具体业务逻辑
// ...
} catch(CloudEncryptException $e){
// 获取错误信息
exit($e->getMessage());
}
```
## 内置方法
### 设置额外参数 ``setParameter()``
```php
// 使用 setParameter($key, $value) 设置键对值
$driver->setParameter('comment', '自定义加密注释');
// 使用 setParameter([key1=>value1,key2=>value2]) 批量设置键对值
$driver->setParameter(['comment'=>'自定义加密注释',...]);
```
### 设置加密文件 ``setFile()``
加密文件不能用 ``setParameter('file',$filePath)`` 设置
```php
// 直接传入绝对路径或相对路径即可
$driver->setFile($filePath);
```
### 开始加密 ``encrypt()``
必须要当配置好所有的参数之后,才可以调用encrypt()加密,如果缺少参数或者加密失败会抛出 ``CloudEncryptException`` 异常
这时我们可以用``try..catch``尝试捕获
```php
$driver->encrypt();
```
### 保存加密文件 ``saveFile()``
当加密成功后,可以调用 ``saveFile($filePath)`` 方法保存加密好的文件
注意:如果路径不存在,他会自动创建,所以你不需要担心这方面的问题
```php
$driver->saveFile($saveFilePath);
```
### 获取加密结果 ``success()``
此方法必须要在调用 ``saveFile()`` 之后才可以调用,因为 ``encrypt()`` 在加密失败的时候,会抛出异常
如果加密成功调用 ``success()`` 返回会布尔值 ``true`` 或 ``false``
```php
$result = $driver->success();
var_dump($result); // true or false
```
### 获取云端返回的消息 ``message()``
有的时候我们可能想要知道云端返回了什么消息,这时可以使用 ``message()`` 方法来查看云端的消息
```php
$driver->message();
```
## 链式操作
为了优雅与简单共存,所有的内置方法都可以使用链式操作来调用。当然,如果你喜欢的话,甚至可以链式调用 ``success()`` 和 ``message()`` 尽管这并没有什么用
```php
try {
// 设置核心参数
$config = [
'user' =>'',
'pass' =>'',
'apikey' =>''
];
// 获取加密实例
$driver = Driver::setConfig($config)->getInstance('sg11');
// 第二次使用
// $driver = Driver::getInstance('sg11');
// 依次设置 参数 -> 文件 -> 开始加密
$result = $driver->setParameter(['comment'=>'测试','Ver'=>'72'])
->setFile(__DIR__.'/test.php')
->encrypt()
->saveFile(__DIR__.'/test2.zip');
// 判断加密结果
if($result->success()){
// 获取云端消息
echo $result->message().'
';
exit('加密成功');
}else{
exit('加密失败');
}
} catch (CloudEncryptException $e) {
exit($e->getMessage());
}
```
## 自定义加密驱动
为了方便后续添加其他的加密驱动,这里提供了自定义加密驱动的方法
### 1. 在Driver目录下创建驱动文件,格式为``[驱动名]Driver.php``
比如,我们要创建一个Custom加密,则需要在Driver目录下创建一个叫做``CustomDriver.php``的文件
### 2. 命名空间与继承
按照Psr-4命名规范,我们的命名空间必须为 ``Moyu\CloudEncrypt\Driver``
自定义驱动必需要继承自 ``Moyu\CloudEncrypt\Encrypt``
```php
'',
'pass' =>'',
'apikey' =>''
];
// 获取加密实例
$driver = Driver::setConfig($config)->getInstance('custom');
// 依次设置 参数 -> 文件 -> 开始加密
$result = $driver->setParameter(['parameter1'=>'custom','parameter2'=>'custom'])
->setFile(__DIR__.'/test.php')
->encrypt()
->saveFile(__DIR__.'/test2.zip');
// 判断加密结果
if($result->success()){
// 获取云端消息
echo $result->message().'
';
exit('加密成功');
}else{
exit('加密失败');
}
} catch (CloudEncryptException $e) {
exit($e->getMessage());
}
```