root/lang/php/misc/Hermit/src/Hermit/parameter/HermitSqlParameterMixed.php @ 29264

Revision 29264, 1.9 kB (checked in by nowelium, 4 years ago)

複数のdto使うとbindできていなかったので、修正

Line 
1<?php
2
3/**
4 * @author nowelium
5 */
6class HermitSqlParameterMixed extends HermitSqlParameter {
7    private $index = 0;
8    private $parameters = array();
9    public function add(HermitSqlParameter $param, $index){
10        $this->parameters[$index] = $param;
11    }
12    protected function hasParameter($name){
13        foreach($this->parameters as $param){
14            if($param->hasParameter($name)){
15                return true;
16            }
17        }
18        return false;
19    }
20    public function replace($key, $name, $defaultValue){
21        foreach($this->parameters as $param){
22            if($param->hasParameter($name)){
23                return $param->replace($key, $name, $defaultValue);
24            }
25        }
26        return $defaultValue;
27    }
28    public function bind(PDOStatement $stmt, $value){
29        if(!is_array($value)){
30          throw new InvalidParameterException('is not array: ' . var_exoprt($value, true));
31        }
32       
33        $values = (array) $value;
34        foreach($this->parameters as $param){
35            $param->bind($stmt, $values);
36        }
37    }
38   
39    public function monoCreate($expression, $statement, $parameterValue){
40        foreach($this->parameters as $param){
41            $result = $param->monoCreate($expression, $statement, $parameterValue);
42            if(self::MONO_MATCHED === $result){
43                return $result;
44            }
45        }
46        return self::MONO_UNMATCH;
47    }
48    public function binoCreate($expression, $trueStatement, $falseStatement, $parameterValue){
49        foreach($this->parameters as $param){
50            $result = $param->binoCreate($expression, $trueStatement, $falseStatement, $parameterValue);
51            if(self::BINO_TRUE_MATCHED === $result){
52                return $result;
53            }
54            if(self::BINO_FALSE_MATCHED === $result){
55                return $result;
56            }
57        }
58        return self::BINO_UNMATCH;
59    }
60}
Note: See TracBrowser for help on using the browser.