1. 程式人生 > >thinkphp 3.2 加載第三方庫 第三方命名空間庫

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

方法 .com cli ring tin end mes acc lis

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 加載第三方庫 第三方命名空間庫