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

PDOUnique   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
c 1
b 0
f 0
lcom 1
cbo 1
dl 0
loc 29
ccs 14
cts 14
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A test() 0 13 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
}