_field = $field; $this->_direction = strtolower($direction) === 'asc' ? 'ASC' : 'DESC'; } /** * {@inheritDoc} */ public function sql(ValueBinder $generator) { $field = $this->_field; if ($field instanceof ExpressionInterface) { $field = $field->sql($generator); } return sprintf('%s %s', $field, $this->_direction); } /** * {@inheritDoc} */ public function traverse(callable $visitor) { if ($this->_field instanceof ExpressionInterface) { $visitor($this->_field); $this->_field->traverse($visitor); } } /** * Create a deep clone of the order clause. * * @return void */ public function __clone() { if ($this->_field instanceof ExpressionInterface) { $this->_field = clone $this->_field; } } }