Prado\Data\SqlMap\Configuration\TSimpleDynamicParser::parse PHP Метод

parse() публичный Метод

Parse the sql text for dynamic place holders of the form $name$.
public parse ( $sqlText ) : array
Результат array name value pairs 'sql' and 'parameters'.
    public function parse($sqlText)
    {
        $matches = array();
        $mappings = array();
        preg_match_all(self::PARAMETER_TOKEN_REGEXP, $sqlText, $matches);
        for ($i = 0, $k = count($matches[1]); $i < $k; $i++) {
            $mappings[] = $matches[1][$i];
            $sqlText = str_replace($matches[0][$i], self::DYNAMIC_TOKEN, $sqlText);
        }
        return array('sql' => $sqlText, 'parameters' => $mappings);
    }

Usage Example

 /**
  * Prepare the sql text (may extend to dynamic sql).
  * @param TSqlMapStatement mapped statement.
  * @param string sql text.
  * @param SimpleXmlElement statement node.
  * @todo Extend to dynamic sql.
  */
 protected function prepareSql($statement, $sqlStatement, $node)
 {
     $simpleDynamic = new TSimpleDynamicParser();
     $sqlStatement = preg_replace(self::ESCAPED_SIMPLE_MARK_REGEXP, self::SIMPLE_PLACEHOLDER, $sqlStatement);
     $dynamics = $simpleDynamic->parse($sqlStatement);
     if (count($dynamics['parameters']) > 0) {
         $sql = new TSimpleDynamicSql($dynamics['parameters']);
         $sqlStatement = $dynamics['sql'];
     } else {
         $sql = new TStaticSql();
     }
     $sqlStatement = preg_replace('/' . self::SIMPLE_PLACEHOLDER . '/', self::SIMPLE_MARK, $sqlStatement);
     $sql->buildPreparedStatement($statement, $sqlStatement);
     $statement->setSqlText($sql);
 }
TSimpleDynamicParser