103 lines
2.9 KiB
PHP
103 lines
2.9 KiB
PHP
<?php
|
|
/*
|
|
* To change this template, choose Tools | Templates
|
|
* and open the template in the editor.
|
|
*/
|
|
|
|
namespace Doctrine\ORM\Query\AST;
|
|
|
|
/**
|
|
* StateFieldPathExpression ::= SimpleStateFieldPathExpression | SimpleStateFieldAssociationPathExpression
|
|
*
|
|
* @author robo
|
|
*/
|
|
class StateFieldPathExpression extends Node
|
|
{
|
|
private $_parts;
|
|
// Information that is attached during semantical analysis.
|
|
private $_isSimpleStateFieldPathExpression = false;
|
|
private $_isSimpleStateFieldAssociationPathExpression = false;
|
|
private $_embeddedClassFields = array();
|
|
private $_singleValuedAssociationFields = array();
|
|
private $_collectionValuedAssociationFields = array();
|
|
|
|
public function __construct(array $parts)
|
|
{
|
|
$this->_parts = $parts;
|
|
}
|
|
|
|
public function getParts() {
|
|
return $this->_parts;
|
|
}
|
|
|
|
/**
|
|
* Gets whether the path expression represents a state field that is reached
|
|
* either directly (u.name) or by navigating over optionally many embedded class instances
|
|
* (u.address.zip).
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function isSimpleStateFieldPathExpression()
|
|
{
|
|
return $this->_isSimpleStateFieldPathExpression;
|
|
}
|
|
|
|
/**
|
|
* Gets whether the path expression represents a state field that is reached
|
|
* by navigating over at least one single-valued association and optionally
|
|
* many embedded class instances. (u.Group.address.zip, u.Group.address, ...)
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function isSimpleStateFieldAssociationPathExpression()
|
|
{
|
|
return $this->_isSimpleStateFieldAssociationPathExpression;
|
|
}
|
|
|
|
public function isPartEmbeddedClassField($part)
|
|
{
|
|
return isset($this->_embeddedClassFields[$part]);
|
|
}
|
|
|
|
public function isPartSingleValuedAssociationField($part)
|
|
{
|
|
return isset($this->_singleValuedAssociationFields[$part]);
|
|
}
|
|
|
|
public function isPartCollectionValuedAssociationField($part)
|
|
{
|
|
return isset($this->_collectionValuedAssociationFields[$part]);
|
|
}
|
|
|
|
/* Setters to attach semantical information during semantical analysis. */
|
|
|
|
public function setIsSimpleStateFieldPathExpression($bool)
|
|
{
|
|
$this->_isSimpleStateFieldPathExpression = $bool;
|
|
}
|
|
|
|
public function setIsSimpleStateFieldAssociationPathExpression($bool)
|
|
{
|
|
$this->_isSimpleStateFieldAssociationPathExpression = $bool;
|
|
}
|
|
|
|
public function setIsEmbeddedClassPart($part)
|
|
{
|
|
$this->_embeddedClassFields[$part] = true;
|
|
}
|
|
|
|
public function setIsSingleValuedAssociationPart($part)
|
|
{
|
|
$this->_singleValuedAssociationFields[$part] = true;
|
|
}
|
|
|
|
public function setIsCollectionValuedAssociationPart($part)
|
|
{
|
|
$this->_collectionValuedAssociationFields[$part] = true;
|
|
}
|
|
|
|
public function dispatch($sqlWalker)
|
|
{
|
|
return $sqlWalker->walkStateFieldPathExpression($this);
|
|
}
|
|
} |