天天看點

ThinkPHP3.2整合七牛雲第三方sdk

網上很多教程都沒有說清楚為什麼整合會報錯,究其原因是因為七牛雲的php-sdk檔案采用的命名空間不符合ThinkPHP的規範,那麼我們應該從命名空間規範入手,通過配置類庫映射,讓ThinkPHP能夠正确的判斷use關鍵字指向的類庫,并自動加載。

正确的整合方法如下:

第一步,注冊七牛雲,建立空間,下載下傳sdk

第二步,将下載下傳的php-sdk-7.1.3.zip解壓,提取php-sdk-7.1.3\src路徑下的Qiniu檔案夾到ThinkPHP/Library/Vendor路徑下

第三步,在子產品配置目錄下面,例如:Application/Home/Conf,建立alias.php檔案用于定義類庫映射,該檔案會自動加載,定義方式如下:

<?php
/**
 * 作者: 景向後山
 * 時間: 2017/7/15
 * 七牛雲PHP-SDK的類庫映射檔案
 */

return array(
    'Qiniu\Auth' => VENDOR_PATH . 'Qiniu/Auth.php',
    'Qiniu\Zone' => VENDOR_PATH . 'Qiniu/Zone.php',
    'Qiniu\Config' => VENDOR_PATH . 'Qiniu/Config.php',
    'Qiniu\Etag' => VENDOR_PATH . 'Qiniu/Etag.php',
    'Qiniu\Http\Client' => VENDOR_PATH . 'Qiniu/Http/Client.php',
    'Qiniu\Http\Request' => VENDOR_PATH . 'Qiniu/Http/Request.php',
    'Qiniu\Http\Response' => VENDOR_PATH . 'Qiniu/Http/Response.php',
    'Qiniu\Http\Error' => VENDOR_PATH . 'Qiniu/Http/Error.php',
    'Qiniu\Processing\ImageUrlBuilder' => VENDOR_PATH . 'Qiniu/Processing/Request.php',
    'Qiniu\Processing\Operation' => VENDOR_PATH . 'Qiniu/Processing/Operation.php',
    'Qiniu\Processing\PersistentFop' => VENDOR_PATH . 'Qiniu/Processing/PersistentFop.php',
    'Qiniu\Storage\BucketManager' => VENDOR_PATH . 'Qiniu/Storage/BucketManager.php',
    'Qiniu\Storage\FormUploader' => VENDOR_PATH . 'Qiniu/Storage/FormUploader.php',
    'Qiniu\Storage\ResumeUploader' => VENDOR_PATH . 'Qiniu/Storage/ResumeUploader.php',
    'Qiniu\Storage\UploadManager' => VENDOR_PATH . 'Qiniu/Storage/UploadManager.php',
);
           

然後在需要調用七牛雲sdk的地方使用如下方式,即可成功調用,無需修改sdk代碼:

$bucket = C("BUCKET");
$accessKey = C("ACCESSKEY");
$secretKey = C("SECRETKEY");

Vendor('Qiniu.functions');  //功能檔案引入
$auth = new \Qiniu\Auth($accessKey, $secretKey);
// 生成上傳Token
$token = $auth->uploadToken($bucket);
echo $token;