protected function replacePropertyExpression($matches) {
		//count available matches
		//this indicates the type of expression to replace
		$total_matches = count($matches);
		$type = $subindex = null;
	
		switch ($total_matches) {
			/*
			 * Property
			 */
			case 4: //#{PROPERTY@1[INDEX]@2?:TYPE@3}
				$type = substr($matches[3], 1);
			case 3: //#{PROPERTY@1[INDEX]@2}
				$subindex = empty($matches[2]) ? null : substr($matches[2], 1, -1);
			case 2: //#{PROPERTY@1}
				$key = $matches[1];

				//obtain type from annotation (when possible)
				if (is_null($type) && $this->wrappedArg instanceof ObjectArgumentWrapper) {
					if ($this->wrappedArg->getClassProfile()->isEntity()) {
						$property = $this->wrappedArg->getClassProfile()->getProperty($key);
						$type = $property->getType();
					}
				}
	
				return $this->getIndex($key, $subindex, $type);
				break;
	
			/*
			 * Interval
			 */
			case 9: //#{PROPERTY@4[LEFT_INDEX@6..RIGHT_INDEX@7]:TYPE@8}
				$type = substr($matches[8], 1);
			case 8: //#{PROPERTY@4[LEFT_INDEX@6..RIGHT_INDEX@7]}
				$key = $matches[4];
					
				//obtain type from annotation (when possible)
				if (is_null($type) && $this->wrappedArg instanceof ObjectArgumentWrapper) {
					if ($this->wrappedArg->getClassProfile()->isEntity()) {
						$property = $this->wrappedArg->getClassProfile()->getProperty($key);
						$type = $property->getType();
					}
				}
					
				return $this->getRange($key, $matches[6], $matches[7], $type);
				break;
		}
	}
protected function replacePropertyExpression($matches) {
		//count available matches
		//this indicates the type of expression to replace
		$total_matches = count($matches);
		$type = $subindex = null;
	
		switch ($total_matches) {
			/*
			 * Property
			 */
			case 4: //#{PROPERTY@1[INDEX]@2?:TYPE@3}
				$type = substr($matches[3], 1);
			case 3: //#{PROPERTY@1[INDEX]@2}
				$subindex = empty($matches[2]) ? null : substr($matches[2], 1, -1);
			case 2: //#{PROPERTY@1}
				$key = $matches[1];

				//obtain type from annotation (when possible)
				if (is_null($type) && $this->wrappedArg instanceof ObjectArgumentWrapper) {
					if ($this->wrappedArg->getClassProfile()->isEntity()) {
						$property = $this->wrappedArg->getClassProfile()->getProperty($key);
						$type = $property->getType();
					}
				}
	
				return $this->getIndex($key, $subindex, $type);
				break;
	
			/*
			 * Interval
			 */
			case 9: //#{PROPERTY@4[LEFT_INDEX@6..RIGHT_INDEX@7]:TYPE@8}
				$type = substr($matches[8], 1);
			case 8: //#{PROPERTY@4[LEFT_INDEX@6..RIGHT_INDEX@7]}
				$key = $matches[4];
					
				//obtain type from annotation (when possible)
				if (is_null($type) && $this->wrappedArg instanceof ObjectArgumentWrapper) {
					if ($this->wrappedArg->getClassProfile()->isEntity()) {
						$property = $this->wrappedArg->getClassProfile()->getProperty($key);
						$type = $property->getType();
					}
				}
					
				return $this->getRange($key, $matches[6], $matches[7], $type);
				break;
		}
	}
protected function replacePropertyExpression ( $ matches ) { //count available matches //this indicates the type of expression to replace $ total_matches = count ( $ matches ) ; $ type = $ subindex = null ; switch ( $ total_matches ) { /*
			 * Property
			 */ case 4 : //#{PROPERTY@1[INDEX]@2?:TYPE@3} $ type = substr ( $ matches [ 3 ] , 1 ) ; case 3 : //#{PROPERTY@1[INDEX]@2} $ subindex = empty ( $ matches [ 2 ] ) ? null : substr ( $ matches [ 2 ] , 1 , - 1 ) ; case 2 : //#{PROPERTY@1} $ key = $ matches [ 1 ] ; //obtain type from annotation (when possible) if ( is_null ( $ type ) && $ this -> wrappedArg instanceof ObjectArgumentWrapper ) { if ( $ this -> wrappedArg -> getClassProfile ( ) -> isEntity ( ) ) { $ property = $ this -> wrappedArg -> getClassProfile ( ) -> getProperty ( $ key ) ; $ type = $ property -> getType ( ) ; } } return $ this -> getIndex ( $ key , $ subindex , $ type ) ; break ; /*
			 * Interval
			 */ case 9 : //#{PROPERTY@4[LEFT_INDEX@6..RIGHT_INDEX@7]:TYPE@8} $ type = substr ( $ matches [ 8 ] , 1 ) ; case 8 : //#{PROPERTY@4[LEFT_INDEX@6..RIGHT_INDEX@7]} $ key = $ matches [ 4 ] ; //obtain type from annotation (when possible) if ( is_null ( $ type ) && $ this -> wrappedArg instanceof ObjectArgumentWrapper ) { if ( $ this -> wrappedArg -> getClassProfile ( ) -> isEntity ( ) ) { $ property = $ this -> wrappedArg -> getClassProfile ( ) -> getProperty ( $ key ) ; $ type = $ property -> getType ( ) ; } } return $ this -> getRange ( $ key , $ matches [ 6 ] , $ matches [ 7 ] , $ type ) ; break ; } }
Returns a string that replaces a property expression
@param array $matches
@return string
Returns a string that replaces a property expression