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 怎麽區分? 會加載沖突嗎?
thinkphp 3.2 加載第三方庫 第三方命名空間庫