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

Config static config()基本定义
Config static config()静态方法,全局配置QueryList,返回值为QL\Config对象。
方法列表:
- use() 全局安装插件
- bind() 全局功能扩展
Config use($plugins,…$opt)
用法同QueryList的use方法,全局安装插件后,所有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)
用法同QueryList的bind()方法,全局功能扩展,所有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经验文章,请点击链接: