## 第三方類
在`FastAdmin`應用插件開發過程中經常需要引用于第三方的類,此時可以采用以下兩種方式進行引入。
## 手動修改文件命名空間
如果我們引入的第三方類文件比較少,我們可以采取手動修改文件命名空間的辦法。例如我們需要引入`HashMap.php`這個類,這個類功能比較單一,只有一個文件,此時我們可以將`HashMap.php`文件放在`addons/mydemo/library`目錄下,然后再修改`HashMap.php`中的`namespace`,修改為
~~~php
<?php
namespace addons\mydemo\library;
class HashMap
{
//普通方法
public function myNormalMethod(){
}
//靜態方法
public static function myStaticMethod(){
}
}
~~~
其中`mydemo`為你的插件目錄名。
通過以上修改后,我們在我們的服務端任何位置均可使用
~~~php
$hashMap = new \addons\mydemo\library\HaspMap();
$result = $hashMap->myNormalMethod();
~~~
來實例化我們的類,靜態方法可以通過
~~~php
$result = \addons\mydemo\library\HashMap::myStaticMethod();
~~~
其中`myNormalMethod`為`HaspMap`的公共方法,`myStaticMethod`為`HashMap`的靜態方法。
## 通過行為載入命名空間
如果我們引入的第三方類是一個`composer`包,或者說這個類已經使用了命名空間,如果手動修改類的命名空間工作量過大時,我們可以通過在行為中載入命名空間。
比如我們需要引入`https://gitee.com/yansongda/pay`這個微信支付庫處理類。
首先我們下載這個源碼包,把源碼包中的`src`中的代碼拷貝到`addons/mydemo/library/Yansongda`這個目錄下,如圖:

首先我們在`addons/mydemo/Mydemo.php`中新增一個
~~~scss
/**
* 應用初始化
*/
public function appInit()
{
//先判斷是否已經通過其它方式引入了此類
if(!class_exists("\Yansongda\Pay\Pay")){
\think\Loader::addNamespace('Yansongda\Pay', ADDON_PATH . 'mydemo' . DS . 'library' . DS . 'Yansongda' . DS);
}
}
~~~
如圖:

最后我們再到后臺管理右上角清下緩存即可。
我們在通過行為載入命名空間時務必檢查下第三方類的命名空間使用的名稱。比如我們打開`Pay.php`這個文件可以看到它的頭部使用的命名空間是`Yansongda\Pay`,如圖:

因此我們在使用`\think\Loader::addNamespace`導入命名空間時的第一個參數要寫`Yansongda\Pay`,如果命名空間導入不正確,后續都將不能正確的引入。
類的使用方法和上方手動引入類的使用方法一致。
## 常見問題
1. 如果在引用時出現類未找到,請檢查類的命名空間是否正確,其次請檢查目錄、文件、類名大小寫是否正確。
2. 插件開發引用類,請全部使用命名空間的方法,請勿使用`require`或`include`進行載入。