laravel 包引用案例TopClient::connecti

2019-09-25  本文已影响0人  AGEGG

一、案例

地址:

https://github.com/orzcc/taobao-top-client

安装

composer require orzcc/taobao-top-client

配置

示例代码:

use TopClient;
use TopClient\request\TbkItemGetRequest;

$topclient = TopClient::connection();
$req = new TbkItemGetRequest;
$req->setFields("num_iid,title,pict_url,reserve_price,zk_final_price,user_type,provcity,item_url");
$req->setQ('手机');
$req->setSort("tk_total_sales");
$req->setPageNo('1'); // 实验后发现必需用字符串的数字才能正确分页
$req->setPageSize('40');
$resp = $topclient->execute($req);
dd($resp);

其中TopClient::connection()之前一直不得要领,现在有些思路,一边写着一边梳理

二、代码梳理

1.1 首先先看下配置中添加的内容:

TopClient为在aliasesOrzcc\TopClient\Facades\TopClient::class

image.png

查看发现为laravel中的门面设置,最后绑定的是topclient这个类
topclient到底在哪里定义的那?

1.2 从服务注册去找

image.png

Orzcc\TopClient\TopClientServiceProvider::class,

image.png
其他的先不看,看到红框内的内容后,我们知道原来我们使用的$topclient = TopClient::connection();
TopClient的入口为TopClientManager

1.3 检验一下

image.png
image.png
image.png
OK,没问题,但我们发现TopClientManager没有connection方法,只有一个createConnection非常可疑。

2 调查继承AbstractManager方法

查看发现AbstractManager文件是引用的graham-campbell/manager包
查看下这个包的文档:


image.png

终于我们在AbstractManager类中找到个connection方法


image.png

3 好了,浅析下主要操作

TopClient::connection();其实就是AbstractManager::connection()

image.png

OK,整个路径分析的差不多了,
这样就很清楚了


image.png

使用这个包时,我们需要完成这2个方法即可

上一篇下一篇

猜你喜欢

热点阅读