第三方类库
在FastAdmin插件开发过程中经常需要引用于第三方的类库,此时可以采用以下两种方式进行引入。
手动修改文件命名空间
如果我们引入的第三方类库文件比较少,我们可以采取手动修改文件命名空间的功能。例如我们需要引入HashMap.php
这个类库,这个类库功能比较单一,只有一个文件,此时我们可以将HashMap.php
文件放在addons/mydemo/library
目录下,然后再修改HashMap.php
中的namespace
,修改为
<?php
namespace addons\mydemo\library;
class HashMap
{
//类库代码
}
其中mydemo
为你的插件目录名。
通过以上修改后,我们在我们的服务端任何位置均可使用
$hashMap = new \addonos\mydemo\library\HaspMap();
$result = $hashMap->myNormalMethod();
来实例化我们的类,静态方法可以通过
$result = \addonos\mydemo\library\HashMap::myStaticMethod();
其中myNormalMethod
为HaspMap
的公共方法,myStaticMethod
为HashMap
的静态方法。
通过行为载入命名空间
如果我们引入的第三方类库是一个composer
包,或者说这个类已经使用了命名空间,如果手动修改类库的命名空间工作量过大时,我们可以通过在行为中载入命名空间。
比如我们需要引入https://gitee.com/yansongda/pay
这个微信支付库处理类库。
首先我们下载这个源码包,把源码包中的src
中的代码拷贝到addons/mydemo/library/Yansongda
这个目录下,如图:
首先我们在Mydemo.php
中新增一个
/**
* 应用初始化
*/
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
,如果命名空间导入不正确,后续都将不能正确的引入。
类库的使用方法和上方手动引入类库的使用方法一致。
常见问题
- 如果在引用时出现类未找到,请检查类的命名空间是否正确,其次请检查目录、文件、类名大小写是否正确。
- 插件开发引用类库,请全部使用命名空间的方法,请勿使用
require
或include
进行载入。