中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

yii2 中怎么引入第三方類庫

發布時間:2021-06-22 15:04:43 來源:億速云 閱讀:405 作者:Leah 欄目:大數據

yii2 中怎么引入第三方類庫,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

composer包

如果第三方代碼是發布的composer包,這個集成往往是最簡單的。

以這個支持psr-4的Mailer為例,你只需要用composer require命令安裝,安裝好了就可以直接在代碼中使用了(如果需要,點擊Mailer的鏈接,使用規則參考github上面的說明)。

這是為什么呢,為什么你可以直接使用,你手動require了嗎?

我們知道,composer是php的包管理器,它本身就提供了一個自動加載器,能把composer下載的類文件全部加載進來,也就是說,只要我們在項目中引入這個自動加載的類,所有composer安裝的庫都可以直接使用。

我知道你想說你沒有做任何操作,確實你沒有。這是因為我們早已經在應用的入口文件index.php內require了composer的自動加載器,不信你看看是不是有這么一行代碼

require(__DIR__ . '/../../vendor/autoload.php');

so,你懂了么?

官方自帶的加載器

但是,實際上卻有一部分不小的比例的人總是抱怨,composer安裝不了,使用國內鏡像也卡著不動,怎么破?我可不可以直接手動從github上下載使用?

當然可以。我們還以上面的Mailer為例,該類的命名方式符合psr-4標準,因此我們可以使用yii2自帶的加載器來加載。

首先我們手動從github上下載,然后把下載下來的壓縮包解壓縮后放到你的vendor/bailangzhan/ 目錄下,并重命名為 yii2-swiftmailer,現在vendor/bailangzhan下的目錄結構是這樣的

├─yii2-swiftmailer
│      composer.json
│      LICENSE
│      Mailer.php
│      README.md

注意我們沒有使用composer安裝哦。

我們注意到Mailer的命名空間是bailangzhan,所以我們在應用的config/main.php文件中配置

 
  1. 'aliases' => [

  2. '@bailangzhan' => '@vendor/bailangzhan',

  3. ],

aliases同components同級,位置不要放錯。

現在你只需要像下面這樣操作Mailer就好

$mailer = new \bailangzhan\Mailer(\bailangzhan\Mailer::TYPE_1, $message)

利用第三方自己的自動加載器

有同學又要說了,哎呀呀,你這上面說的都是帶composer的類庫,阿里大魚木有composer,只有一個他自己的Autoloader類,這個怎么操作喃?

有Autoloader自動加載就顯得非常方便了,一般情況下,我們只需要在入口文件內引入這個自帶的Autoloader類,就可以在代碼中直接使用了。使用方法參考下面我們要說的阿里大于的使用方法。

把阿里大于的sdk下載下來,我們放到應用的vendor/alidayu目錄下面,即 frontend/vendor/alidayu/Autoloader.php,相關目錄需要自己創建。

因為阿里大魚的sdk比較特殊,需要在引入Autoloader之前定義一些常量,即TopSdk文件內定義的且該文件有require("Autoloader.php"),所以我們實際需要引入的則是這個文件。

在index.php文件中,require Yii.php文件之前添加下面一行代碼

require(__DIR__ . '/../vendor/alidayu/TopSdk.php');

因為沒有具體的命名空間,所以在代碼中new阿里大于類庫中的類時,要在類名前面添加反斜杠 \

如阿里大于可以像下面這樣使用

 
  1.  

    $c = new \TopClient;  

  2.  

    $c ->appkey = $appkey ;  

  3.  

    $c ->secretKey = $secret ;  

  4.  

    $req = new \AlibabaAliqinFcSmsNumSendRequest;  

  5.  

    $req ->setExtend( "" );  

  6.  

    $req ->setSmsType( "normal" );  

  7.  

    $req ->setSmsFreeSignName( "" );  

  8.  

    $req ->setSmsParam( "" );  

  9.  

    $req ->setRecNum( "13000000000" );  

  10.  

    $req ->setSmsTemplateCode( "" );  

  11.  

    $resp = $c ->execute( $req );  

吐槽支付寶,原生require

說到這些,有同學不禁要吐槽支付寶支付的sdk,什么玩意,啥都沒有。怎么辦,怎么使用?

composer雖然給我們提供了很多的便利,但是有了composer不能忘本呀。從上面的例子中我們可以看出,無論是composer的自動加載還是yii官方自帶的自動加載抑或是第三方代碼帶的自動加載,其實質都是require所有相關的類。

既然如此,對于支付寶這種無composer,不滿足psr-4,無Autoloader的“三無”第三方,我們只能使出“殺手锏”:手動require!

怎么個手動require呢?以支付寶sdk為例,我們可能用的最多的就是sdk包下面的alipay.config.php和alipay_submit.class.php,假設我們把支付寶的sdk下載后放置在frontend\vendor\alipay 目錄,我們可以這樣使用

  1.  

    require_once(Yii::getAlias('@frontend')."/vendor/alipay/alipay.config.php");  

  2.  

    require_once(Yii::getAlias('@frontend')."/vendor/alipay/lib/alipay_submit.class.php");  

同樣,我們使用alipay包下面的類比如AlipaySubmit時,仍然需要在類的前面添加斜杠 \

關于yii2 中怎么引入第三方類庫問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

yii
AI

博客| 元江| 任丘市| 望谟县| 塔城市| 大方县| 永丰县| 太白县| 正蓝旗| 蓬安县| 达尔| 丹阳市| 石门县| 山阳县| 东丰县| 老河口市| 綦江县| 财经| 唐海县| 玉龙| 博客| 大连市| 航空| 井陉县| 天津市| 天祝| 监利县| 石家庄市| 余庆县| 密山市| 尼玛县| 沅江市| 格尔木市| 平舆县| 海原县| 乌海市| 旬阳县| 平泉县| 南康市| 南城县| 江门市|