# PhalApi框架擴展類庫
## 擴展類庫簡介
### 致力于與開源項目一起提供企業級的解決方案!
此部分類庫為PhalApi框架下可重用的擴展類庫,各個擴展相自獨立,可以根據需要自動安裝使用。
此擴展類庫可以是基于已有的第三方開源類庫的二次開發和集成,也可以是自主研發的組件、工具、模塊。通過使用可重用的擴展類庫,可大大減少開發成本,并且慢慢地會發現,原來編程本來就是一件如此簡單的事情,就像搭積木一樣。
正如我們一直提倡的:**接口,從簡單開始!**
## 擴展類庫列表
擴展類庫composer名稱|擴展類庫名稱|簡要說明
---|---|---
APK|APK文件解包處理|對APK進行解包,支持絕大部分APK文件處理。
Auth|Auth權限擴展|實現了基于用戶與組的權限認證功能,與RBAC權限認證類似,主要用于對服務級別的功能進行權限控制。
[phalapi/cli](https://github.com/phalapi/cli)|CLI擴展類庫|可用于開發命令行應用,基于GetOpt,主要作用是將命令參數進行解析和處理。
Cluster|基于PhalApi的DB集群拓展|為了解決大量數據寫入分析的問題,支持大量select、和大量insert。
CryptTraffic|移動設備通信加密|用于移動設備通信加密。
Excel|PhalApi-Excel|讀取Excel。
Facepp|face++接口|face++接口。
[phalapi/fast-route](https://github.com/phalapi/fast-route)|FastRoute快速路由|基于FastRoute實現,通過配置實現自定義路由配置,從而輕松映射service接口服務。
Image|PhalApi-Image圖像處理|按照尺寸壓縮上傳圖片,參考自ThinkPhP圖形處理。
KafKa|簡單舒適的PHP-KafKa拓展|基于rdKafKa封裝的一個簡單舒適KafKa拓展。
Log4php|基于log4php的日志擴展|兼容PhalApi日志的接口操作,同時基于log4php完成更多出色的日志工作。
Medoo|Medoo數據庫驅動|Medoo數據庫驅動。
OSS|PhalApi-OSS阿里云OSS包|對阿里云的OSS文件服務器的封裝。
PHPExcel|PhalApi-PHPExcel擴展|提供了更為強大的Excel處理功能。
PHPMailer|基于PHPMailer的郵件發送|用于發送郵件。
PHPRPC|代理模式下phprpc協議的輕松支持|可用于phprpc協議的調用,服務端只需要簡單添加入口即可完美切換。
Pay|基于PhalApi的第三方支付擴展|支持微信支付和支付寶支付。
Payment|微信支付及支付寶支付擴展|支持微信支付和支付寶支付。
Qiniu|七牛云存儲接口調用|可用于將圖片上傳到七牛云存儲,或者七牛SDK包提供的其他功能。
RabbitMQ|PhalApi-RabbitMQ隊列拓展|基于隊列標桿中的RabbitMQ的隊列擴展。
Redis|基于PhalApi的Redis拓展|提供更豐富的Redis操作,并且進行了分庫處理可以自由搭配。
SMS|PhalApi-SMS容聯云短信服務器擴展|基于容聯云通訊,發送短信。
Smarty|基于PhalApi的Smarty擴展|基于老牌的PHP模版引擎Smarty,提供視圖渲染功能。
SOAP|SOAP擴展|使用PHP官方提供的SOAP協議,用于搭建Web Services。
Swoole|Swoole擴展|基于swoole,支持的長鏈接和異步任務實現。
[phalapi/task](https://github.com/phalapi/task)|計劃任務擴展|用于后臺計劃任務的調度。
ThirdLogin|第三方登錄擴展|第三方登錄。
Translate|PhalApi-Translate百度地圖翻譯擴展|基于百度翻譯的翻譯。
UCloud|圖片上傳擴展|用于圖片文件上傳。
User|User用戶擴展|提供用戶、會話和集成第三方登錄。
View|Vuew視圖擴展|提供視圖渲染功能。
Wechat|微信開發擴展|可用于微信的服務號、訂閱號、設備號等功能開發。
Xhprof|性能分析工具PhalApi-Xhprof|對Facebook開源的輕量級PHP性能分析工具進行了封裝拓展。
YoukuClient|優酷開放平臺接口擴展|用于調用優酷開放平臺的接口。
Zip|PhalApi-Zip壓縮文件處理|用于處理文件壓縮。
> 溫馨提示:未有composer鏈接的,表示尚未從1.x遷移到2.x版本,可在原來的[Phalapi-Library擴展類庫](https://github.com/phalapi/phalapi-library)項目中查閱。
## 擴展類庫的使用
對于某個擴展類庫,當需要使用時,可以按“安裝、配置、使用”三步曲進行。
#### 安裝
擴展類庫的安裝很簡單,在PhalApi 2.x版本下,直接通過在composer.json文件中配置需要依賴的擴展類庫即可。
例如,項目本身自帶的Task擴展類庫:
```
{
"require": {
"phalapi/task": "2.0.*"
}
}
```
配置好后,執行```composer update```更新操作即可。
至此,便完成了擴展類庫的安裝,相當簡單。
#### 配置注冊
根據不同的擴展類庫,其配置和注冊的情況不同,有些不需要配置也不需要注冊,有些需要配置、注冊中的一種,有些可能配置、注冊都需要。
##### 何為配置?
這里說的配置是指在項目配置文件./config/app.php內添加對應擴展類庫的配置,配置選項的路徑通常為:```app.擴展類庫名稱```。此外,有的擴展類庫可能還需要配置數據庫配置文件./config/dbs.php。
##### 何為注冊?
而注冊則是指將對應的擴展類庫注冊到DI容器```\PhalApi\DI()```中,需要在./config/di.php文件中配置。注冊的服務名稱通常為擴展類庫的小寫名稱。
注冊好后,便可以在項目需要的位置進行調用了。
#### 使用
不同的擴展類庫,其提供的功能不同,所以具體的使用也不盡相同。當使用到某個擴展類庫時,可以參考對應的文檔說明。有的擴展可能需要調用其內部接口才能實現對應的功能,有些擴展可能提供了直接可用的接口服務。
## 擴展類庫開發指南
為了統一擴展類庫的風格、便于用戶更容易使用,這里建議:
+ 代碼:遵循composer和psr-4的風格,并盡量Lite.php為入口類,一個擴展,一個Git項目,源代碼可放置在自己的Git倉庫;
+ composer:建議統一注冊在[phalapi](https://packagist.org/packages/phalapi/phalapi)下,可聯系dogstar;
+ 配置:統一放置在```\PhalApi\DI()->config->get('app.擴展包名')```中,避免配置沖突;
+ 文檔:統一提供README.md文件,對擴展類庫的功能、安裝和配置、使用示例以及運行效果進行說明;
### 從微架構到擴展類庫的演進
在應用項目的實際開發,我們也可以有意識地將一些通用的工具和操作與業務分離,以便可以在項目內更好地重用。當抽離成工具或者通用類后,則可以進一步推廣到公司內其他項目,即組件復用。如果覺得可以,則發揚開源精神,分享給社區。這也是符合從微架構到應用構架、系統架構、乃至企業架構的演進之路。
+