private function getContextMatcher(array $class) { $config = $this->getConfig(); $classes = $this->getClasses(); return function ($context) use($config, $classes, $class) { if (!isset($context['config']) || $config !== $context['config']) { return false; } $baseClass = array_diff_key($class, ['fields' => null]); if (!isset($context['class']) || !is_array($context['class']) || $baseClass != array_intersect_key($context['class'], $baseClass)) { return false; } if (array_keys($class['fields']) != array_keys($context['class']['fields'])) { return false; } foreach ($class['fields'] as $fieldName => $field) { if ($field != array_intersect_key($context['class']['fields'][$fieldName], $field)) { return false; } } return true; }; }