Changeset 20139 for lang/php

Show
Ignore:
Timestamp:
09/28/08 18:00:55 (2 months ago)
Author:
nowelium
Message:
 
Location:
lang/php/misc/Hermit/src/Hermit
Files:
9 modified
1 moved

Legend:

Unmodified
Added
Removed
  • lang/php/misc/Hermit/src/Hermit/annote/HermitAnnote.php

    r19902 r20139  
    1919    public abstract function getFile(ReflectionMethod $method); 
    2020    public abstract function getQuery(ReflectionMethod $method); 
    21     public abstract function getDelegate(ReflectionMethod $method); 
    2221    public abstract function getValueType(ReflectionMethod $method); 
    2322    public static final function create(ReflectionClass $reflector){ 
  • lang/php/misc/Hermit/src/Hermit/annote/HermitAnnoteConst.php

    r19902 r20139  
    117117        return null; 
    118118    } 
    119     public function getDelegate(ReflectionMethod $method){ 
    120         return $this->reflector->getConstant($name . self::DELEGATE_SUFFIX); 
    121     } 
    122119    public function getValueType(ReflectionMethod $method){ 
    123120        $key = $method->getName() . self::VALUE_TYPE_SUFFIX; 
  • lang/php/misc/Hermit/src/Hermit/command/HermitSqlCommandFactory.php

    r19902 r20139  
    7979            $this->appendSql($method, $creator); 
    8080        } 
    81         $valueType = HermitValueTypeFactory::create($this->annote->getValueType($method)); 
     81        $valueType = HermitValueTypeFactory::create($this->annote, $method); 
    8282        return new HermitSelectCommand($method, $creator, $valueType); 
    8383    } 
  • lang/php/misc/Hermit/src/Hermit/resultset/HermitDefaultResultSet.php

    r19902 r20139  
    55 */ 
    66class HermitDefaultResultSet implements HermitResultSet { 
    7     public function execute(PDOStatement $stmt, HermitValueType $type){ 
     7    public function execute(HermitStatement $stmt, HermitValueType $type){ 
    88        $type->apply($stmt); 
    99        return $stmt->fetch(); 
  • lang/php/misc/Hermit/src/Hermit/valuetype/HermitArrayValueType.php

    r19902 r20139  
    44 * @author nowelium 
    55 */ 
    6 class HermitArrayValueType implements HermitValueType { 
     6class HermitArrayValueType extends AbstractHermitValueType { 
     7    const ACCEPT = 'ASSOC'; 
     8    public static function accept($value){ 
     9        return 0 === strcasecmp($value, self::ACCEPT); 
     10    } 
    711    public function apply(HermitStatement $stmt){ 
    812        $stmt->setFetchMode(PDO::FETCH_ASSOC); 
  • lang/php/misc/Hermit/src/Hermit/valuetype/HermitNopValueType.php

    r19902 r20139  
    44 * @author nowelium 
    55 */ 
    6 class HermitNopValueType implements HermitValueType { 
     6class HermitNopValueType extends AbstractHermitValueType { 
     7    public static function accept($value){ 
     8        return true; 
     9    } 
    710    public function apply(HermitStatement $stmt){ 
    811        // nop 
  • lang/php/misc/Hermit/src/Hermit/valuetype/HermitObjectValueType.php

    r19902 r20139  
    44 * @author nowelium 
    55 */ 
    6 class HermitObjectValueType implements HermitValueType { 
     6class HermitObjectValueType extends AbstractHermitValueType { 
     7    const ACCEPT = 'OBJ'; 
     8    public static function accept($value){ 
     9        return 0 === strcasecmp($value, self::ACCEPT); 
     10    } 
    711    public function apply(HermitStatement $stmt){ 
    812        $stmt->setFetchMode(PDO::FETCH_OBJ); 
  • lang/php/misc/Hermit/src/Hermit/valuetype/HermitValueType.php

    r19902 r20139  
    55 */ 
    66interface HermitValueType { 
     7    public function __construct(HermitAnnote $annote, ReflectionMethod $method, $value); 
     8    public static function accept($value); 
    79    public function apply(HermitStatement $stmt); 
    810} 
  • lang/php/misc/Hermit/src/Hermit/valuetype/HermitValueTypeFactory.php

    r19902 r20139  
    55 */ 
    66abstract class HermitValueTypeFactory { 
    7     protected static $types = array( 
    8         'array' => 'HermitArrayValueType', 
    9         'obj' => 'HermitObjectValueType' 
     7    protected static $valueTypes = array( 
     8        'HermitArrayValueType', 
     9        'HermitObjectValueType' 
    1010    ); 
    11     public static function create($value){ 
    12         if(null === $value){ 
    13             return new HermitNopValueType; 
     11    public static function create(HermitAnnote $annote, ReflectionMethod $method){ 
     12        $value = $annote->getValueType($method); 
     13        foreach(self::$valueTypes as $type){ 
     14            if(call_user_func(array($type, 'accept'), $value)){ 
     15                return new $type($annote, $method, $value); 
     16            } 
    1417        } 
    15         if(!isset(self::$types[$value])){ 
    16             return new HermitNopValueType; 
    17         } 
    18         return new self::$types[$value]; 
     18        return new HermitNopValueType; 
    1919    } 
    2020}