• romanb's avatar
    [2.0] Parser work. Added double-dispatch functionality to AST node classes for... · ae5d2122
    romanb authored
    [2.0] Parser work. Added double-dispatch functionality to AST node classes for use in the SqlWalker to reduce big if/else instanceof checks and for better maintainability. Also its less error-prone in the SqlWalker because its harder to miss a conditional case. Added new extensible DQL function implementation.
    ae5d2122
InExpression.php 1.21 KB
<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

namespace Doctrine\ORM\Query\AST;

/**
 * InExpression ::= StateFieldPathExpression ["NOT"] "IN" "(" (Literal {"," Literal}* | Subselect) ")"
 *
 * @author robo
 */
class InExpression extends Node
{
    private $_pathExpression;
    private $_not = false;
    private $_literals = array();
    private $_subselect;

    public function __construct($pathExpression)
    {
        $this->_pathExpression = $pathExpression;
    }

    public function setLiterals(array $literals)
    {
        $this->_literals = $literals;
    }

    public function getLiterals()
    {
        return $this->_literals;
    }

    public function setSubselect($subselect)
    {
        $this->_subselect = $subselect;
    }

    public function getSubselect()
    {
        return $this->_subselect;
    }

    public function setNot($bool)
    {
        $this->_not = $bool;
    }

    public function isNot()
    {
        return $this->_not;
    }

    public function getPathExpression()
    {
        return $this->_pathExpression;
    }

    public function dispatch($sqlWalker)
    {
        return $sqlWalker->walkInExpression($this);
    }
}