/** * @param string $id * @param string[] $classes * @param string[] $data * @param QueryWrapperInterface $query * @param mixed $default * @param FilterInterface|null $nextFilter */ public function __construct($id, array $classes, array $data, QueryWrapperInterface $query, $default, FilterInterface $nextFilter = null) { $this->relationName = array_slice(explode('\\', $query->getPascalCasedObjectName()), -1)[0]; $relations = $query->find(); $relationOptions = []; foreach ($relations as $relation) { $key = $this->makeRelationKey($relation); $relationName = (string) $relation; $this->relations[$key] = $relation; $relationOptions[$key] = $relationName; } $this->options = array_merge([$default, ''], $relationOptions, [static::ALL, static::ANY, static::NONE]); if ($nextFilter === null) { $this->nextFilter = new DummyFilter(); } else { $this->nextFilter = $nextFilter; } $this->id = $id; $this->statements = []; $this->classes = $classes; $this->data = $data; }