thinkphp 3.2 加載第三方庫 第三方命名空間庫


tp 自動加載的介紹: http://document.thinkphp.cn/manual_3_2.html#autoload

第三方庫不規范庫 不適用命名空間的庫 可以使用import函數導入,其有三個參數,第一個文件名,第二起始導入路徑,第三個后綴

import("RBAC.AccessDecisionManager",dirname(__FILE__),".php");

vendor函數參數和import一樣  vendor("RBAC.AccessDecisionManager",dirname(__FILE__),".php");等於import("Vendor.RBAC.AccessDecisionManager",dirname(__FILE__),".php");

 

阿里oss php庫 是符合命名空間的庫 我使用import和vendor怎么都導入不了。

地址: https://github.com/aliyun/aliyun-oss-php-sdk?spm=a2c4g.11186623.2.9.2ab622150dWD7x 

阿里oss庫 支持composer 安裝。

需要自動加載的方法載入,

具體如下:

1. 下載sdk文件解壓到 vendor目錄新建的AliOSS目錄。

2.在使用的地方

Vendor('AliOSS.autoload');
$config=C('ALIOSS_CONFIG');
try {
$ossClient=new \OSS\OssClient($config['KEY_ID'],$config['KEY_SECRET'],$config['END_POINT']);
// $ossClient = new Vendor\AliOSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);
$bucketListInfo = $ossClient->listBuckets();
p($bucketListInfo);
$bucketList = $bucketListInfo->getBucketList();
foreach($bucketList as $bucket) {
print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");
}
} catch (OssException $e) {
// echo "string";
print $e->getMessage();
}

原理大概是 手動Vendor加載了sdk的自動加載文件,然后此命名空間的下的文件加載都會通過配置的加載方法自動加載。

 

遺留問題: 如果兩個sdk 命名空間都是OSS 怎么區分? 會加載沖突嗎?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM