全局配置

使用QueryList全局配置,避免重复操作。


QueryList的config()方法可用于全局配置QueryList。

使用场景:比如在项目中全局注册QueryList插件,这样在项目中任何位置都可以直接使用这些插件,避免重复注册操作。

示例

在项目的启动文件中全局注册一些QueryList插件和扩展一些功能,以Laravel框架为例,在AppServiceProvider.php文件的boot()方法中全局配置QueryList:

  1. <?php
  2. namespace App\Providers;
  3. use Illuminate\Support\ServiceProvider;
  4. use QL\QueryList;
  5. class AppServiceProvider extends ServiceProvider
  6. {
  7. /**
  8. * Bootstrap any application services.
  9. *
  10. * @return void
  11. */
  12. public function boot()
  13. {
  14. // 全局注册插件
  15. QueryList::config()->use(My\MyPlugin::class,$arg1,$arg2,$arg3)
  16. ->use([
  17. My\MyPlugin1::class,
  18. My\MyPlugin2::class,
  19. Other\OtherPlugin::class
  20. ]);
  21. //全局注册一个自定义的编码转换方法
  22. QueryList::config()->bind('myEncode',function($outputEncoding,$inputEncoding){
  23. $html = iconv($inputEncoding,$outputEncoding.'//IGNORE',$this->getHtml());
  24. $this->setHtml($html);
  25. return $this;
  26. });
  27. }
  28. /**
  29. * Register any application services.
  30. *
  31. * @return void
  32. */
  33. public function register()
  34. {
  35. //
  36. }
  37. }

之后就可以在项目的任何位置使用QueryList时都可以直接使用这些已注册的扩展功能了:

  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use QL\QueryList;
  5. class IndexController extends Controller
  6. {
  7. public function index()
  8. {
  9. $data = QueryList::get('...')->myPlugin1('...')->rules('...')->queryData();
  10. $data = QueryList::get('https://top.etao.com')->myEncode('UTF-8','GBK')->find('a')->texts();
  11. }
  12. }