Show
Ignore:
Timestamp:
10/01/08 21:02:13 (3 months ago)
Author:
nowelium
Message:
 
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/php/misc/Hermit/src/Hermit/statement/HermitStatementBuilder.php

    r19954 r20387  
    44 * @author nowelium 
    55 */ 
    6 abstract class HermitStatementBuilder { 
     6class HermitStatementBuilder { 
    77    const REGEX = '/(\/\*([^\*\/]*)\*\/)(\w+|((\'|")([^(\'|")]*)(\'|")))?/m'; 
    8     public static function prepare(PDO $pdo, ReflectionMethod $method, $sql){ 
    9         $parameterType = self::createParameterType($method); 
    10         $sql = preg_replace_callback(self::REGEX, array($parameterType, 'match'), $sql); 
    11         return new HermitStatement($parameterType, $pdo->prepare($sql)); 
     8    private $method; 
     9    private $sqlCreator; 
     10    public function __construct(ReflectionMethod $method, HermitSqlCreator $sqlCreator){ 
     11        $this->method = $method; 
     12        $this->sqlCreator = $sqlCreator; 
    1213    } 
    13     protected static function createParameterType(ReflectionMethod $method){ 
    14         $numOfParams = $method->getNumberOfParameters(); 
     14    public function build(PDO $pdo){ 
     15        $parameter = $this->createParameterType(); 
     16        $sql = $this->sqlCreator->createSql($pdo); 
     17        $sql = self::preparedSql($parameter, $sql); 
     18        return new HermitStatement($parameter, $pdo->prepare($sql)); 
     19    } 
     20 
     21    protected static function preparedSql(HermitSqlParameter $parameter, $sql){ 
     22        return preg_replace_callback(self::REGEX, array($parameter, 'match'), $sql); 
     23    } 
     24 
     25    protected function createParameterType(){ 
     26        $numOfParams = $this->method->getNumberOfParameters(); 
    1527        if(0 === $numOfParams){ 
    1628            return new HermitSqlParameterNull;