Changeset 19902

Show
Ignore:
Timestamp:
09/25/08 17:19:29 (5 years ago)
Author:
nowelium
Message:
 
Location:
lang/php/misc/Hermit/src/Hermit
Files:
9 added
9 modified

Legend:

Unmodified
Added
Removed
  • lang/php/misc/Hermit/src/Hermit/HermitAutoloader.php

    r19775 r19902  
    1616        '/resultset', 
    1717        '/responder', 
    18         '/tx' 
     18        '/tx', 
     19        '/valuetype' 
    1920    ); 
    2021    private static $userClassPath = array(); 
  • lang/php/misc/Hermit/src/Hermit/annote/HermitAnnote.php

    r19426 r19902  
    2020    public abstract function getQuery(ReflectionMethod $method); 
    2121    public abstract function getDelegate(ReflectionMethod $method); 
     22    public abstract function getValueType(ReflectionMethod $method); 
    2223    public static final function create(ReflectionClass $reflector){ 
    2324        return new HermitAnnoteConst($reflector); 
  • lang/php/misc/Hermit/src/Hermit/annote/HermitAnnoteConst.php

    r19426 r19902  
    1212    const PROCEDURE_SUFFIX = '_PROCEDURE'; 
    1313    const DELEGATE_SUFFIX = '_DELEGATE'; 
     14    const VALUE_TYPE_SUFFIX = '_VALUE_TYPE'; 
    1415 
    1516    const UNDERSCORE = '_'; 
     
    119120        return $this->reflector->getConstant($name . self::DELEGATE_SUFFIX); 
    120121    } 
     122    public function getValueType(ReflectionMethod $method){ 
     123        $key = $method->getName() . self::VALUE_TYPE_SUFFIX; 
     124        if($this->reflector->hasConstant($key)){ 
     125            return $this->reflector->getConstant($key); 
     126        } 
     127        return null; 
     128    } 
    121129} 
    122130 
  • lang/php/misc/Hermit/src/Hermit/command/HermitSelectCommand.php

    r19682 r19902  
    77    private $method; 
    88    private $sqlCreator; 
    9     public function __construct(ReflectionMethod $method, HermitSqlCreator $sqlCreator){ 
     9    private $type; 
     10    public function __construct(ReflectionMethod $method, HermitSqlCreator $sqlCreator, HermitValueType $type){ 
    1011        $this->method = $method; 
    1112        $this->sqlCreator = $sqlCreator; 
     13        $this->type = $type; 
    1214    } 
    1315    public function execute(PDO $pdo, array $parameters){ 
     
    1517        $stmt = HermitStatementBuilder::prepare($pdo, $this->method, $sql); 
    1618        $stmt->execute($parameters); 
    17         return HermitResultSet::create($stmt, $this->method); 
     19        $resultset = HermitResultSetFactory::create($this->method); 
     20        return $resultset->execute($stmt, $this->type); 
    1821    } 
    1922} 
     23 
  • lang/php/misc/Hermit/src/Hermit/command/HermitSqlCommandFactory.php

    r19682 r19902  
    7979            $this->appendSql($method, $creator); 
    8080        } 
    81         return new HermitSelectCommand($method, $creator); 
     81        $valueType = HermitValueTypeFactory::create($this->annote->getValueType($method)); 
     82        return new HermitSelectCommand($method, $creator, $valueType); 
    8283    } 
    8384    protected function createSelectSqlCreator(ReflectionMethod $method, $dbName){ 
  • lang/php/misc/Hermit/src/Hermit/parameter/HermitSqlParameterMixed.php

    r18954 r19902  
    55 */ 
    66class HermitSqlParameterMixed extends HermitSqlParameter { 
     7    private $index = 0; 
    78    private $parameters = array(); 
    89    public function add(HermitSqlParameter $param){ 
     
    1011    } 
    1112    public function replace($key, $name, $defaultValue){ 
     13        return $this->parameters[$this->index++]->replace($key, $name, $defaultValue); 
    1214    } 
    1315    public function bind(PDOStatement $stmt, $value){ 
     16        if(!is_array($value)){ 
     17          throw new InvalidParameterException('is not array: ' . var_exoprt($value, true)); 
     18        } 
     19         
     20        $values = (array) $value; 
     21        foreach($this->parameters as $param){ 
     22            $param->bind($stmt, $values); 
     23            array_shift($values); 
     24        } 
    1425    } 
    1526} 
     27 
  • lang/php/misc/Hermit/src/Hermit/resultset/HermitProcedureResultSet.php

    r19344 r19902  
    11<?php 
    22 
     3/** 
     4 * @author nowelium 
     5 */ 
    36class HermitProcedureResultSet { 
    47} 
     8 
  • lang/php/misc/Hermit/src/Hermit/resultset/HermitResultSet.php

    r19344 r19902  
    44 * @author nowelium 
    55 */ 
    6 class HermitResultSet { 
    7     const LIST_SUFFIX = 'List'; 
    8     public static function create(HermitStatement $stmt, ReflectionMethod $method){ 
    9         $subs = substr($method->getName(), -4); 
    10         if($subs !== false){ 
    11             if(strcasecmp($subs, self::LIST_SUFFIX) === 0){ 
    12                 $results = array(); 
    13                 foreach($stmt->fetch(PDO::FETCH_OBJ) as $obj){ 
    14                     $results[] = $obj; 
    15                 } 
    16                 return $results; 
    17             } 
    18         } 
    19         return $stmt->fetch(PDO::FETCH_OBJ); 
    20     } 
     6interface HermitResultSet { 
     7    public function execute(HermitStatement $stmt, HermitValueType $type); 
    218} 
     9 
  • lang/php/misc/Hermit/src/Hermit/statement/HermitStatementBuilder.php

    r19426 r19902  
    55 */ 
    66abstract class HermitStatementBuilder { 
    7     const REGEX = '/(\/\*(\w+)\*\/)((\'|")(\w+)(\'|"))/m'; 
     7    const REGEX = '/(\/\*(\w+)\*\/)((\'|")(\w+)(\'|"))?/m'; 
    88    public static function prepare(PDO $pdo, ReflectionMethod $method, $sql){ 
    99        $parameterType = self::createParameterType($method); 
     
    1313    protected static function createParameterType(ReflectionMethod $method){ 
    1414        $numOfParams = $method->getNumberOfParameters(); 
    15         if($numOfParams < 1){ 
     15        if(0 === $numOfParams){ 
    1616            return new HermitSqlParameterNull; 
    1717        } 
    1818        $params = $method->getParameters(); 
    19         if($numOfParams == 1){ 
     19        if(1 === $numOfParams){ 
    2020            return self::createParameterTypeWithIndex($params[0], 0); 
    2121        } 
     
    4343    } 
    4444} 
     45