needle = $needle; $this->haystack = $haystack; } public function getNeedle() { return $this->needle; } public function getHaystack() { return $this->haystack; } function getExpression(SQL $sql, array &$params): string { $haystack = $this->getHaystack(); if (is_array($haystack)) { $values = array(); foreach ($haystack as $value) { $values[] = $sql->addValue($value, $params); } $values = implode(",", $values); $values = "($values)"; } else if($haystack instanceof Select) { $values = $haystack->build($params); } else { $sql->getLogger()->error("Unsupported in-expression value: " . get_class($haystack)); return false; } return $sql->addValue($this->needle, $params) . " IN $values"; } }