我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

在上一篇文章中,苏南大叔描述的是:如何使用bind()方法,增强QueryList功能。在本篇文章中,苏南大叔描述的是个非常类似的方法,use()方法也可以增强QueryList的功能,可以通过use()初始化若干插件。相比较bind()方法而言,use()功能就更加强大的多了。

苏南大叔:QueryList 使用 use() 方法增加百度搜索模块 - querylist_baidu_search
QueryList 使用 use() 方法增加百度搜索模块(图1-1)

use()QueryList安装插件的方法。

use()函数原型

QueryList use($plugins,…$opt)
  • 参数: $plugins
    插件类名,也可以是插件类名集合数组
  • 参数: …$opt
    安装插件时附带的多个参数。是否需要携带参数以及该携带什么参数跟具体的插件有关。

use()使用方法

use()方法,一共有两种用法。分别如下:

用法一,安装单个插件,可携带安装参数

$ql = QueryList::getInstance();
$ql->use(My\MyPlugin::class);
//或者,带安装参数
$ql->use(My\MyPlugin::class,$arg1,$arg2,$arg3);

用法二,同时安装多个插件,不能携带安装参数

$ql = QueryList::getInstance();
$ql->use([
   My\MyPlugin::class,
   My\MyPlugin2::class,
   Other\OtherPlugin::class
]);

插件范例

这个use在官方文档中,并没有详细说明。下面的是一共百度搜索的插件范例:

composer require jaeger/querylist-rule-baidu
  • Baidu baidu($pageNumber = 10):获取百度搜索引擎

class Baidu: 

  • Baidu search($keyword):设置搜索关键词 
  • Baidu setHttpOpt(array $httpOpt = []):设置HTTP选项,查看: GuzzleHttp options 
  • int getCount():获取搜索结果总条数 
  • int getCountPage():获取搜索结果总页数 
  • Collection page(page=1,page=1,realURL = false):获取搜索结果
require 'vendor/autoload.php';
use QL\QueryList;
use QL\Ext\Baidu;
$ql = QueryList::use(Baidu::class);
// 搜索百度网盘网站,包含‘百度’关键词的资源
$searcher = $ql->baidu()->search('site:pan.baidu.com 百度');
// 获取第一页数据,并获取真实URL连接地址
$data = $searcher->page(1,true);
print_r($data->all());

返回结果类似如下:

Array
(
    [0] => Array
        (
            [title] => 百度网盘_享你所想
            [link] => http://pan.baidu.com/
        )
    [1] => Array
        (
            [title] => 百度网盘 客户端下载
            [link] => https://pan.baidu.com/download
        )
    [2] => Array
        (
            [title] => 百度网盘-开放平台
            [link] => https://pan.baidu.com/platform/read
        )
     // ....
)

更多方法:

$baidu = $ql->baidu(15); // 设置每页搜索15条结果
$searcher = $baidu->search('QueryList');
$count = $searcher->getCount();  // 获取搜索结果总条数
$data = $searcher->page(1);
$data = $searcher->page(2);

$searcher = $baidu->search('php');
$countPage = $searcher->getCountPage(); // 获取搜索结果总页数
for ($page = 1; $page <= $countPage; $page++)
{
    $data = $searcher->page($page);
}

$data = $searcher->setHttpOpt([
    // 设置http代理
    'proxy' => 'http://222.141.11.17:8118',
   // Set the timeout time in seconds
    'timeout' => 30,
])->page(1);

注意事项

bind()是一样的,使用该use()方法安装的插件只有当前的QueryList对象可以使用,如果想要全局安装插件让所有QueryList均可使用,可以查看config()方法文档。

总结

use()bind()一样,都可以增强querylist()的功能。相比较而言:bind()更加灵活,适合临时自定义功能。而use()则适合于应用更加庞大的第三方增强。

不过,默认情况下,use()bind()都只能应用于当前querylist,如何想要继续,可以选择使用config()方法,做全局的功能增强。

更多相关细节,请参见苏南大叔的后续文章内容。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   querylist