protected function setUp()
 {
     $this->transformer = FilterTransformerBuilder::make()->build();
     $this->config = Configuration::make()->setNameResolver(new CallbackNameResolver(function ($name) {
         return "[{$name}]";
     }));
     $this->data = ['john' => ['name' => 'John', 'age' => 11, 'email' => null], 'jane' => ['name' => 'Jane', 'age' => 21, 'email' => '*****@*****.**'], 'joey' => ['name' => 'Joey', 'age' => 31, 'email' => '']];
 }
<?php

require __DIR__ . '/../vendor/autoload.php';
use Magento\Component\QueryLanguage\Expression\Transformer\Configuration;
use Magento\Component\QueryLanguage\Expression\Transformer\Field\CallbackNameResolver;
use Magento\Component\QueryLanguage\Expression\Transformer\FilterTransformerBuilder;
use Magento\Component\QueryLanguage\Expression\Where;
// Build or hydrate query
$query = Where::all([Where::field('name')->contains('Snow'), Where::field('age')->between(25, 30)]);
// Sample data array
$data = [['id' => 1, 'name' => 'John Snow', 'age' => 30], ['id' => 2, 'name' => 'Ramsay Snow', 'age' => 31]];
// Setup transformer
$config = Configuration::make()->setNameResolver(new CallbackNameResolver(function ($name) {
    return '[' . $name . ']';
}));
// Create transformer
$transformer = FilterTransformerBuilder::make()->build();
// Transform query into filter callable
$filter = $transformer->transform($query, $config);
// Apply filter to initial set of data
$people = array_filter($data, $filter);
var_dump($people);