# 19. 第三方類庫
## 引用第三方類庫
將你的第三方類庫直接放到插件根目錄或者新建文件夾放好。
例如`demo`插件下新建`libaray`文件夾,之后把類庫放入`library`文件夾。
## 修改類庫的命名空間
通過上面,類庫放進來并不能調用到,我們需要增加或修改命名空間。
如下圖,放入了兩個類庫文件,我們只需把命名空間改成:namespace addons\\插件名稱\\library;,library里面還有文件夾就繼續按目錄層次寫下去即可。

根據插件命名空間調整,如下所示
```
<pre class="calibre16">```
<span class="token"><</span><span class="token">?</span>php
<span class="token5">// addons\插件名稱\目錄</span>
namespace addons\demo\library<span class="token1">;</span>
class <span class="token6">World</span>
<span class="token1">{</span>
public <span class="token2">function</span> <span class="token6">show</span><span class="token1">(</span><span class="token1">)</span>
<span class="token1">{</span>
echo <span class="token3">1</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token1">}</span>
```
```
```
<pre class="calibre16">```
<span class="token"><</span><span class="token">?</span>php
namespace addons\demo\library\oat<span class="token1">;</span>
class <span class="token6">Lumoto</span>
<span class="token1">{</span>
<span class="token1">}</span>
```
```
改好后調用
```
<pre class="calibre16">```
$w <span class="token">=</span> <span class="token2">new</span> <span class="token6"><span class="token1">\</span>addons<span class="token1">\</span>demo<span class="token1">\</span>library<span class="token1">\</span>World</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
$w<span class="token">-</span><span class="token">></span><span class="token6">show</span><span class="token1">(</span><span class="token1">)</span><span class="token1">;</span>
```
```
## 通過初始化事件自動注冊
如果類庫文件過多或者是一個composer包,修改起來麻煩,可參考如下代碼,在插件名稱、插件初始化時執行
> 2.2.1.20220603版本起支持
如下:在`addonsInitHook`事件中調用了`addNamespace`自動注冊第三方類庫方法
```
<pre class="calibre16">```
<span class="token"><</span><span class="token">?</span>php
declare <span class="token1">(</span>strict_types<span class="token">=</span><span class="token3">1</span><span class="token1">)</span><span class="token1">;</span>
namespace addons\demo<span class="token1">;</span>
use think\Addons<span class="token1">;</span>
class <span class="token6">Demo</span> extends <span class="token6">Addons</span>
<span class="token1">{</span>
public <span class="token2">function</span> <span class="token6">install</span><span class="token1">(</span><span class="token1">)</span>
<span class="token1">{</span>
<span class="token2">return</span> <span class="token3">true</span><span class="token1">;</span>
<span class="token1">}</span>
public <span class="token2">function</span> <span class="token6">uninstall</span><span class="token1">(</span><span class="token1">)</span>
<span class="token1">{</span>
<span class="token2">return</span> <span class="token3">true</span><span class="token1">;</span>
<span class="token1">}</span>
public <span class="token2">function</span> <span class="token6">addonsInitHook</span><span class="token1">(</span><span class="token1">)</span>
<span class="token1">{</span>
$this<span class="token">-</span><span class="token">></span><span class="token6">addNamespace</span><span class="token1">(</span><span class="token4">'命名空間'</span><span class="token1">)</span><span class="token1">;</span>
<span class="token1">}</span>
<span class="token1">}</span>
```
```
例如:以PhpWord類庫為例,我們下載后的壓縮包目錄結構如下:

去到src目錄,有如下文件夾

把PhpWord文件夾放入到addons\\demo\\library\\PhpOffice目錄下,之所以還要創建PhpOffice目錄因為他的命名空間是
```
<pre class="calibre16">```
PhpOffice\PhpWord
```
```
所以我們需要在創建`PhpOffice`文件夾,完成這一步后在`addonsInitHook`事件中添加命名空間
```
<pre class="calibre16">```
$this<span class="token">-</span><span class="token">></span><span class="token6">addNamespace</span><span class="token1">(</span><span class="token4">'PhpOffice\PhpWord'</span><span class="token1">)</span><span class="token1">;</span>
```
```
在插件里面或者其他地方使用類似于PhpOffice\\PhpWord空間的類庫時都會在這加載。
## composer 方式安裝第三方類庫
> 2.2.1.20220603版本起支持
使用composer方式之前你需要先了解什么是composer,鏈接地址:https://pkg.xyz/#how-to-install-composer 1. 分別建立vendor文件夾與composer.json文件

2. composer.json內容
```
<pre class="calibre16">```
<span class="token1">{</span>
<span class="token4">"name"</span><span class="token1">:</span> <span class="token4">"hkcms/demo"</span><span class="token1">,</span>
<span class="token4">"description"</span><span class="token1">:</span> <span class="token4">"demo plugin"</span><span class="token1">,</span>
<span class="token4">"type"</span><span class="token1">:</span> <span class="token4">"hkcms-addon"</span><span class="token1">,</span>
<span class="token4">"license"</span><span class="token1">:</span> <span class="token4">"apache2.0"</span><span class="token1">,</span>
<span class="token4">"authors"</span><span class="token1">:</span> <span class="token1">[</span>
<span class="token1">{</span>
<span class="token4">"name"</span><span class="token1">:</span> <span class="token4">"demo"</span><span class="token1">,</span>
<span class="token4">"email"</span><span class="token1">:</span> <span class="token4">"demo@hkcms.cn"</span>
<span class="token1">}</span>
<span class="token1">]</span><span class="token1">,</span>
<span class="token4">"config"</span><span class="token1">:</span> <span class="token1">{</span>
<span class="token1">}</span><span class="token1">,</span>
<span class="token4">"require"</span><span class="token1">:</span> <span class="token1">{</span>
<span class="token1">}</span>
<span class="token1">}</span>
```
```
`name`composer包的名字,格式為“vendor名稱/包名”
`description`描述信息,簡單描述下你的插件
`type`固定為**hkcms-addon**
`license`固定`apache2.0`
`authors`作者,按上面的格式改掉即可
``
3\. 跟composer一樣在當前插件目錄安裝、更新、刪除第三方庫包。
例如安裝第三方微信SDK
```
<pre class="calibre16">```
composer require overtrue<span class="token">/</span>wechat<span class="token1">:</span><span class="token">~</span><span class="token3">4.0</span> <span class="token">-</span>vvv
```
```
安裝成功后即可使用。
> 注意,插件必須是安裝后才能生效
- 簡介
- 下載與安裝配置
- 下載
- 虛擬主機安裝
- 百度云虛擬主機
- 創業云虛擬主機
- Linux下寶塔安裝
- 寶塔一鍵部署
- Windows下寶塔安裝
- phpEnv下安裝
- phpStudy下安裝
- 偽靜態(url重寫)
- 安裝系統
- 調試模式與env文件
- 重新安裝與安裝文件說明
- 后臺使用幫助
- 后臺入口文件
- 首頁面板
- 配置中心
- 站點配置
- SEO設置
- SEO設置-靜態生成
- 文檔屬性
- 站點模塊
- V2.2.2版本 -
- V2.2.3版本 +
- 模型管理
- 欄目管理
- 字段類型與組件
- 前言
- 前端組件
- 驗證規則
- text 單行文本
- textarea 多行文本
- radio 單選
- checkbox 復選
- select 下拉列表
- selects下拉列表(多)
- selectpage 動態下拉
- editor編輯器
- image圖片
- images圖片(多)
- number數字
- date日期
- datetime日期和時間
- downfile文件上傳
- downfiles文件上傳(多)
- array 數組(鍵值對)
- 內容管理
- 自定義URL
- 多語言
- 界面多語言
- 內容多語言
- 多語言URL地址
- 附件管理
- 應用中心
- 標簽語法
- 標簽使用必讀
- 列表標簽
- content 內容列表標簽
- contentpage 內容列表分頁
- wfpage 瀑布流分頁
- filter 篩選標簽
- order 排序標簽
- 內容標簽
- guestbook 留言(表單)標簽(廢棄)
- form 表單標簽
- pre 上一篇標簽
- next 下一篇標簽
- prenext 上一篇下一篇(高級)標簽
- fileinfo 獲取附件信息(文件下載)
- 內容分頁
- raw 格式化編輯器文本(即將廢棄)
- 全局標簽
- seo 標簽
- channel 欄目標簽
- arcone 獲取單條文檔
- breadcrumb 面包屑導航標簽
- adv 站點模塊標簽
- date 日期格式化標簽
- substr字符(標題)截取標簽
- volist 循環標簽
- language 獲取語言列表標簽
- query 查詢數據庫內容
- include 導入模板文件標簽
- 原生PHP與php標簽
- map生成位置地圖
- thumb 生成縮略圖
- addons 插件檢測
- 標簽管理
- taglist標簽(獲取標簽列表)
- tagarclist根據標簽獲取文章內容列表
- 導入標簽
- 模板開發
- 1. 創建模板
- 2. 模板目錄結構
- 3. 模板描述文件(重要) info.ini
- 4. 變量輸出格式
- 4. 模板變量
- 5. 獲取站點配置
- 6. 模板界面多語言
- 7. 模板靜態目錄及調用靜態文件
- 8. 模板定義插件事件
- 9. 模板搜索頁
- 10. 模板配置JSON
- 11. 導入演示數據
- 12. 卸載刪除演示數據
- 13. 模板文件打包
- 14. 整站源碼打包
- 插件開發
- 1. 創建插件
- 2. 目錄結構
- 3. 插件名稱類
- 4. 插件信息(info.ini)
- 5. 插件事件
- 6. 配置文件
- 7. install 安裝目錄
- 8. 創建菜單
- 9. 插件控制器
- 10. 插件視圖
- 10-1 插件主題化
- 11. 插件模型
- 12. 模型事件
- 13. 插件內置函數
- 13-1 插件函數庫
- 14. 插件多語言
- 15. 插件中間件
- 16. 插件路由
- 17. 插件驗證器
- 18. 標簽庫
- 19. 第三方類庫
- 20. 數據庫文件導入
- 插件打包
- 后臺前端使用幫助
- 二次開發幫助(更新中)
- 后臺前端開發幫助
- 路由(鏈接地址、訪問規則)
- URL訪問
- 路由定義
- URL生成
- 附錄
- 數據字典
- 助手函數庫