Changeset 20924

Show
Ignore:
Timestamp:
10/07/08 20:34:25 (2 months ago)
Author:
nowelium
Message:

CRUD + procedure まで一通り終わり

Location:
lang/php/misc/Hermit/src/Hermit
Files:
1 added
4 modified

Legend:

Unmodified
Added
Removed
  • lang/php/misc/Hermit/src/Hermit/creator/HermitAutoDeleteSqlCreator.php

    r19682 r20924  
    55 */ 
    66class HermitAutoDeleteSqlCreator implements HermitSqlCreator { 
     7    private $sql; 
     8    private $query; 
    79    public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 
     10        $meta = HermitDatabaseMetaFactory::get($pdo); 
     11        $table = $annote->getTable(); 
     12        $info = $meta->getTableInfo($table); 
     13        $primaryKeys = $info->getPrimaryKeys(); 
     14         
     15        $sql = 'DELETE'; 
     16        $sql .= ' '; 
     17        $sql .= 'FROM'; 
     18        $sql .= ' '; 
     19        $sql .= $table; 
     20        $sql .= ' '; 
     21        $sql .= 'WHERE'; 
     22        $sql .= ' '; 
     23        foreach($primaryKeys as $pk){ 
     24            $sql .= ' '; 
     25            $sql .= $pk . '='; 
     26            $sql .= ' '; 
     27            $sql .= '/*' . $pk . '*/'; 
     28            $sql .= '"' . $pk . '"'; 
     29            $sql .= ' '; 
     30            $sql .= 'AND'; 
     31        } 
     32        $sql = substr($sql, 0, -3); 
     33        $this->sql = $sql; 
    834    } 
    935    public function createSql(){ 
     36        $sql = ''; 
     37        $sql .= $this->sql; 
     38        if(null !== $this->query){ 
     39            $sql .= ' '; 
     40            $sql .= 'WHERE'; 
     41            $sql .= ' '; 
     42            $sql .= $this->query; 
     43        } 
     44        return $sql; 
     45    } 
     46    public function addQuery($queryString){ 
     47        $this->query = $queryString; 
     48    } 
     49    public function addLimit($limit){ 
    1050    } 
    1151} 
  • lang/php/misc/Hermit/src/Hermit/creator/HermitAutoInsertSqlCreator.php

    r19682 r20924  
    55 */ 
    66class HermitAutoInsertSqlCreator implements HermitSqlCreator { 
     7    private $insert; 
    78    public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 
     9        $meta = HermitDatabaseMetaFactory::get($pdo); 
     10        $table = $annote->getTable(); 
     11        $info = $meta->getTableInfo($table); 
     12        $columns = $info->getColumns(); 
     13        $insert = 'INSERT INTO'; 
     14        $insert .= ' '; 
     15        $insert .= $table; 
     16        $insert .= ' ('; 
     17        $insert .= join(', ', $columns); 
     18        $insert .= ') VALUES ('; 
     19        foreach($columns as $column){ 
     20            $insert .= '/*' . $column . '*/'; 
     21            $insert .= '"' . $column . '"'; 
     22            $insert .= ','; 
     23        } 
     24        $insert = substr($insert, 0, -1); 
     25        $insert .= ')'; 
     26        $this->insert = $insert; 
    827    } 
    928    public function createSql(){ 
     29        return $this->insert; 
    1030    } 
    1131} 
  • lang/php/misc/Hermit/src/Hermit/creator/HermitAutoUpdateSqlCreator.php

    r19682 r20924  
    55 */ 
    66class HermitAutoUpdateSqlCreator implements HermitSqlCreator { 
     7    private $sql; 
     8    private $query; 
    79    public function initialize(PDO $pdo, ReflectionMethod $method, HermitAnnote $annote){ 
     10        $meta = HermitDatabaseMetaFactory::get($pdo); 
     11        $table = $annote->getTable(); 
     12        $info = $meta->getTableInfo($table); 
     13        $primaryKeys = $info->getPrimaryKeys(); 
     14        $columns = $info->getColumns(); 
     15         
     16        $sql = 'UPDATE'; 
     17        $sql .= ' '; 
     18        $sql .= $table; 
     19        $sql .= ' '; 
     20        $sql .= 'SET'; 
     21        $sql .= ' '; 
     22        foreach($columns as $column){ 
     23            $sql .= $column . '='; 
     24            $sql .= '/*' . $column . '*/'; 
     25            $sql .= '"' . $column . '"'; 
     26            $sql .= ','; 
     27        } 
     28        // -1 eq strlen(',') 
     29        $sql = substr($sql, 0, -1); 
     30         
     31        $sql .= 'WHERE'; 
     32        $sql .= ' '; 
     33        foreach($primaryKeys as $pk){ 
     34            $sql .= ' '; 
     35            $sql .= $pk . '='; 
     36            $sql .= ' '; 
     37            $sql .= '/*' . $pk . '*/'; 
     38            $sql .= '"' . $pk . '"'; 
     39            $sql .= ' '; 
     40            $sql .= 'AND'; 
     41        } 
     42        $sql = substr($sql, 0, -3); 
     43        $this->sql = $sql; 
    844    } 
    945    public function createSql(){ 
     46        $sql = ''; 
     47        $sql .= $this->sql; 
     48        if(null !== $this->query){ 
     49            $sql .= ' '; 
     50            $sql .= 'WHERE'; 
     51            $sql .= ' '; 
     52            $sql .= $this->query; 
     53        } 
     54        return $sql; 
     55    } 
     56    public function addQuery($queryString){ 
     57        $this->query = $queryString; 
     58    } 
     59    public function addLimit($limit){ 
    1060    } 
    1161} 
  • lang/php/misc/Hermit/src/Hermit/parameter/HermitSqlParameterClassHash.php

    r18954 r20924  
    1212        foreach($value as $index => $obj){ 
    1313            foreach($this->bindKeys as $index => $key){ 
    14                 $method = $this->reflector->getMethod('get' . ucfirst($key)); 
    15                 $stmt->bindValue(':' . $key, $method->invoke($obj)); 
     14                if($obj instanceof HermitParam){ 
     15                    $stmt->bindValue(':' . $key, $obj->get($key)); 
     16                } else { 
     17                    $method = $this->reflector->getMethod('get' . ucfirst($key)); 
     18                    $stmt->bindValue(':' . $key, $method->invoke($obj)); 
     19                } 
    1620            } 
    1721        }