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

PDOUnique::test()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 13
ccs 9
cts 9
cp 1
rs 9.4285
cc 1
eloc 8
nc 1
nop 1
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
}