root/lang/php/misc/Hermit/src/Hermit/parameter/HermitSqlParameterHash.php @ 25869

Revision 25869, 1.8 kB (checked in by nowelium, 6 years ago)
Line 
1<?php
2
3/**
4 * @author nowelium
5 */
6class HermitSqlParameterHash extends HermitSqlParameter {
7    protected $names = array();
8    protected $bindKeys = array();
9    public function add($name, $index){
10        $this->names[$name] = $index;
11    }
12    protected function hasParameter($name){
13        return isset($this->names[$name]);
14    }
15    public function replace($key, $name, $defaultValue){
16        $this->bindKeys[] = $name;
17        return ':' . $name;
18    }
19    public function bind(PDOStatement $stmt, $value){
20        $logger = HermitLoggerManager::getLogger();
21        if($logger->isDebugEnabled()){
22            $buf = '';
23            foreach($this->names as $name => $pos){
24                $buf .= ':' . $name . ' => ' . $value[$pos];
25            }
26            $logger->debug('{%s} statement binds parameter {:key => param} = %s', __CLASS__, $buf);
27        }
28       
29        foreach($this->names as $name => $pos){
30            $stmt->bindValue(':' . $name, $value[$pos]);
31        }
32    }
33   
34    public function monoCreate($expression, $statement, $parameterValue){
35        throw new RuntimeException('T.B.D');
36    }
37    public function binoCreate($expression, $trueStatement, $falseStatement, $parameterValue){
38        foreach($this->names as $name => $pos){
39            if(strpos($expression, $name) !== false){
40                $value = $parameterValue[$pos];
41                if(is_string($value)){
42                    $value = '\'' . $value . '\'';
43                }
44               
45                $expression = strtr($expression, array($name => $value));
46                if(eval('return ' . $expression . ';')){
47                    $expression = $trueStatement;
48                } else {
49                    $expression = $falseStatement;
50                }
51            }
52        }
53        return $expression;
54    }
55}
Note: See TracBrowser for help on using the browser.