本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。

在前两篇文章use()bind()的基础之上,苏南大叔在说一下config()方法。使用QueryList::config()可以全局注册use()bind(),扩展QueryList对象功能。基本上来说,config()+ use(),或者config()+bind(),就可以把扩展功能增加到每个QueryList对象上了。

苏南大叔:利用 config() 全局注册 use() 和 bind() ,扩展 QueryList 功能 - 全局注册config
利用 config() 全局注册 use() 和 bind() ,扩展 QueryList 功能(图1-1)

Config static config()基本定义

Config static config()

静态方法,全局配置QueryList,返回值为QL\Config对象。

方法列表:

  • use() 全局安装插件
  • bind() 全局功能扩展

Config use($plugins,…$opt)

用法同QueryListuse方法,全局安装插件后,所有QueryList对象均可使用这些插件。

QueryList::config()->use(My\MyPlugin::class,$arg1,$arg2,$arg3);
QueryList::config()->use(My\MyPlugin::class)->use([
 My\MyPlugin::class,
 My\MyPlugin2::class,
 Other\OtherPlugin::class
]);

Config bind(string $name, Closure $provider)

用法同QueryListbind()方法,全局功能扩展,所有QueryList对象均可使用扩展的方法。

例一:全局注册一个自定义的编码转换方法

QueryList::config()->bind('myEncode',function($outputEncoding,$inputEncoding){
    $html = iconv($inputEncoding,$outputEncoding.'//IGNORE',$this->getHtml());
    $this->setHtml($html);
    return $this;
});
$data = QueryList::get('https://top.etao.com')->myEncode('UTF-8','GBK')->find('a')->texts();
print_r($data->all());

例二:全局注册一个myHttp方法到QueryList对象

QueryList::config()->bind('myHttp',function($url){
   $html = file_get_contents($url);
    $this->setHtml($html);
    return $this;
});
$data = QueryList::myHttp('https://top.etao.com')->find('a')->texts();
print_r($data->all());

总结

从例子上,我们可以看出,就是原本的use()bind()从原来的实例位置,换到了QueryList::config()上。基本上思路都还是一样一样的。

更多苏南大叔的querylist经验文章,请点击链接:

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