Completed
Push — master ( b71ad6...2211ef )
by Ivan
08:51
created

Statement::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 5
rs 9.4285
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
namespace vakata\database\driver\ibase;
4
5
use \vakata\database\DBException;
6
use \vakata\database\DriverInterface;
7
use \vakata\database\StatementInterface;
8
use \vakata\database\ResultInterface;
9
10
class Statement implements StatementInterface
11
{
12
    protected $statement;
13
    protected $driver;
14
15
    public function __construct($statement, $driver)
16
    {
17
        $this->statement = $statement;
18
        $this->driver = $driver;
19
    }
20
    public function execute(array $data = []) : ResultInterface
21
    {
22
        $data = array_values($data);
23
        foreach ($data as $i => $v) {
24
            switch (gettype($v)) {
25
                case 'boolean':
26
                case 'integer':
27
                    $data[$i] = (int) $v;
28
                    break;
29
                case 'array':
30
                    $data[$i] = implode(',', $v);
31
                    break;
32
                case 'object':
33
                    $data[$i] = serialize($data[$i]);
34
                    break;
35
                case 'resource':
36
                    if (is_resource($v) && get_resource_type($v) === 'stream') {
37
                        $data[$i] = stream_get_contents($data[$i]);
38
                    } else {
39
                        $data[$i] = serialize($data[$i]);
40
                    }
41
                    break;
42
            }
43
        }
44
        array_unshift($data, $this->statement);
45
        $temp = call_user_func_array("\ibase_execute", $data);
46
        if (!$temp) {
47
            throw new DBException('Could not execute query : '.\ibase_errmsg());
48
        }
49
        return new Result($temp, $data, $this->driver);
50
    }
51
}