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