在最近使用的新项目中需要接入阿里云的OSS服务,之前老的项目用的是1.0的版本。于是这次去看一眼发现阿里云已经更新了OSS的SDK版本,所以记录一下简单的接入过程。当前用的是2.2.4
安装SDK
首先还是推荐使用composer
的方式来安装
composer require aliyuncs/oss-sdk-php
安装完成后你可以在你需要自定义的类库中使用require_once __DIR__ . '/vendor/autoload.php';
来进行引入。但是CI3已经支持composer
的方式来自动加载了。只需要在config.php
中将composer_autoload
的值设置为composer
的autoload.php
文件就可以
$config['composer_autoload'] = realpath(APPPATH . '../vendor/autoload.php');
这样就已经完成了类库的自动加载。下面进行自定义类库的操作部分。
在CI中使用自定义类库引入
首先还是Libraries
目录下新建一个CI_OSS.php
文件。
vagrant@homestead:/srv/code/MongoDB/application/libraries
.
├── CI_OSS.php
├── easemob.php
├── easemob.txt
├── index.html
├── Mongo_db.php
├── Redis.php
然后编写如下内容
<?php defined('BASEPATH') OR exit('No direct script access allowed');
use OSS\OssClient;
use OSS\Core\OssException;
/**
* 阿里云OSS存储公共库
*/
class CI_OSS
{
private $_CI;
private $_oss;
function __construct()
{
$this->_CI =& get_instance();
$this->_CI->load->config('oss');
$config = $this->_CI->config->item('oss');
if (isset($this->_oss)) {
return $this->_oss;
}
$this->_oss = new OssClient(
$config['accessKeyId'],
$config['accessKeySecret'],
$config['endpoint']
);
}
/**
* 使用魔术方法捕获所有未注册方法
* @param [type] $method [调用的方法名]
* @param [type] $param_arr [调用这个方法所传递的参数]
* @return [type] [description]
*/
public function __call($method, $param_arr)
{
return call_user_func_array([$this->_oss, $method], $param_arr);
}
}
注意这里我使用了一个魔术方法__call
这样就可以在调用SDK方法时直接使用CI的方式来调用了。
配置秘钥文件
同样的,我们在config
目录下建立一个oss.php
的秘钥配置文件
<?php
$config['oss']['accessKeyId'] = 'your accessKeyId';
$config['oss']['accessKeySecret'] = 'your accessKeySecret';
$config['oss']['endpoint'] = 'oss-cn-hangzhou.aliyuncs.com';
测试SDK
到此为止不出意外我们就已经把sdk引入到我们的项目中了,在使用的时候就可以和使用ci的库一样来调用sdk中的方法。所以我们简历一个控制器文件来测试一下。
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Test extends CI_Controller
{
function __construct() {
parent::__construct()
}
/**
* 阿里云OSS SDK测试方法
*/
public function oss()
{
$this->load->library('CI_OSS');
$bucketListInfo = $this->ci_oss->listBuckets();
//$bucketList = $bucketListInfo->getBucketList();
dump($bucketListInfo);
}
}
BucketListInfo {#23 ▼
-bucketList: array:2 [▼
0 => BucketInfo {#26 ▼
-location: "oss-cn-shanghai"
-name: "icache"
-createDate: "2016-08-10T02:54:18.000Z"
}
1 => BucketInfo {#24 ▼
-location: "oss-cn-hangzhou"
-name: "staticache"
-createDate: "2014-07-24T14:37:59.000Z"
}
]
}
好了,到此为止就已经完成了sdk的简单集成。