PHP系列 | ThinkPHP5.1 如何自動加載第三方SDK(非composer包 )


注意:這里只是針對於非Composer 安裝包的自動加載的實現,能用composer安裝的自動跳過。

由於ThinkPHP5.1 嚴格遵循PSR-4規范,不再建議手動導入類庫文件,所以新版取消了Loader::import方法以及import和vendor助手函數,推薦全面采用命名空間方式的類以及自動加載機制,如果必須使用請直接改為php內置的include或者require語法。

以下以釘釘官方的SDK為案例(由於釘釘官方沒有像阿里雲那樣直接可以使用composer直接安裝)。

當然Github有一個開源的composer安裝包:https://github.com/mingyoung/dingtalk

你說你為啥不用這個,卻要自定自動加載官方的包。因為這個PHP的版本必須是大於7.0,而針對於5.6則就不行了

1、官方SDK下載地址:https://ding-doc.dingtalk.com/doc#/faquestions/vzbp02

2、下載解壓后,首先將第三方SDK復制到項目中vendor目錄下。

3、在composer.json文件中添加:"files":["vendor/dingdingsdk/TopSdk.php"],添加后:

    "autoload": {
        "psr-4": {
            "app\\": "application",
            "scource\\": "scource"
        },
        "files":[
            "vendor/dingdingsdk/TopSdk.php"
        ]
    },

4、通過終端跳轉到項目根目錄,然后執行 composer dump-autoload 

5、然后在項目中就可以直接使用了

use DingTalkClient;
use DingTalkConstant;
use OapiGettokenRequest;

$appKey= 'dingt4lur7345435tiqnrp';
$appSecret= 'QWagw3j_R5J2fSK43KgRn_vtFFFFFFoooqLzOBDEwx8izfu-hrB';
$client = new DingTalkClient();
$req = new OapiGettokenRequest();
$resp = $client->executeWithAccessKey($req,null,$appKey,$appSecret);

釘釘調用案例 

1、獲取access_token 令牌、創建部門

        $appKey= 'ding8l64ltuffd';
        $appSecret= 'u2LQPxU_0l2Il3izeeeexx13fHgLB9Z28M5jyJwJV-JXlhH7KDd_slw2';

        $client = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI,DingTalkConstant::$METHOD_GET,DingTalkConstant::$FORMAT_JSON);
        $req = new OapiGettokenRequest();
        $req->setAppkey($appKey);
        $req->setAppsecret($appSecret);
        $resp = $client->execute($req,null,'https://oapi.dingtalk.com/gettoken');
        $accessToken = $resp->access_token;
        
        $client = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI,DingTalkConstant::$METHOD_POST,DingTalkConstant::$FORMAT_JSON);
        $req = new OapiDepartmentCreateRequest();
        $req->setName("Tinywan部門");
        $req->setParentid('1');
        $req->setCreateDeptGroup(true); // 創建一個關聯此部門的企業群
        $req->setOrder("100");
        $req->setSourceIdentifier('group_001'); // 部門標識字段,開發者可用該字段來唯一標識一個部門,並與釘釘外部通訊錄里的部門做映射
        $result2 = $client->execute($req,$accessToken,'https://oapi.dingtalk.com/department/create');
        halt($result2);


免責聲明!

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



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