一、案例
地址:
https://github.com/orzcc/taobao-top-client
安装
composer require orzcc/taobao-top-client
配置
- 在config/app.php中的providers数组中添加
Orzcc\TopClient\TopClientServiceProvider::class,
- 在config/app.php中的aliases数组中添加
'TopClient' => Orzcc\TopClient\Facades\TopClient::class,
- 执行
php artisan vendor:publish --provider="Orzcc\TopClient\TopClientServiceProvider"
生成配置文件 - 编辑.env文件,设置appid,appsecret
示例代码:
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
为在aliases
的Orzcc\TopClient\Facades\TopClient::class
查看发现为laravel中的门面设置,最后绑定的是topclient
这个类
那topclient
到底在哪里定义的那?
1.2 从服务注册去找
image.pngOrzcc\TopClient\TopClientServiceProvider::class,
其他的先不看,看到红框内的内容后,我们知道原来我们使用的
$topclient = TopClient::connection();
中
TopClient的入口为TopClientManager
1.3 检验一下
image.pngimage.png
image.png
OK,没问题,但我们发现
TopClientManager
没有connection
方法,只有一个createConnection
非常可疑。
2 调查继承AbstractManager方法
查看发现AbstractManager文件是引用的graham-campbell/manager包
查看下这个包的文档:
image.png
终于我们在AbstractManager类中找到个connection方法
image.png
3 好了,浅析下主要操作
TopClient::connection();
其实就是AbstractManager::connection()
OK,整个路径分析的差不多了,
这样就很清楚了
image.png
使用这个包时,我们需要完成这2个方法即可
网友评论