Completed
Push — master ( 1035b8...a1620e )
by Albert
03:30
created

PDOUnique::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
ccs 5
cts 5
cp 1
rs 9.4285
cc 1
eloc 4
nc 1
nop 3
crap 1
1
<?php
2
3
namespace Albert221\Validation\Rule;
4
5
use PDO;
6
7
class PDOUnique implements RuleInterface
8
{
9
    use RuleTrait;
10
11
    protected $table;
12
    protected $field;
13
    protected $pdo;
14
15 2
    public function __construct($table, $field, PDO $pdo)
16
    {
17 2
        $this->table = $table;
18 2
        $this->field = $field;
19 2
        $this->pdo = $pdo;
20 2
    }
21
22 2
    public function test($value)
23
    {
24 2
        $statement = $this->pdo->prepare(sprintf(
25 2
            'SELECT COUNT(`%s`) FROM `%s` WHERE `%1$s` = :value',
26 2
            $this->field,
27 2
            $this->table
28 2
        ));
29
30 2
        $statement->bindValue(':value', $value);
31 2
        $statement->execute();
32
33 2
        return $statement->fetchColumn() == 0;
34
    }
35
}