Passed
Push — master ( 12b03a...508f3d )
by Seth
08:34
created

UsersBinding::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
ccs 0
cts 4
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
/** UsersBinding */
3
4
namespace Battis\SharedLogs\Database\Bindings;
5
6
use Battis\SharedLogs\Database\AbstractBinding;
7
use Battis\SharedLogs\Exceptions\BindingException;
8
use Battis\SharedLogs\Objects\User;
9
use PDO;
10
11
/**
12
 * A binding between `User` objects and the `users` database table
13
 *
14
 * @author Seth Battis <[email protected]>
15
 */
16
class UsersBinding extends AbstractBinding
17
{
18
19
    /**
20
     * Construct a users binding from a database connector
21
     *
22
     * @param PDO $database
23
     * @throws BindingException
24
     */
25
    public function __construct(PDO $database)
26
    {
27
        parent::__construct($database, 'users', User::class);
28
    }
29
30 View Code Duplication
    public function lookupByScreenName($screen_name, $params = [])
31
    {
32
        $_screen_name = (string) $screen_name;
33
        if (strlen($_screen_name) >= User::SCREEN_NAME_MINIMUM_LENGTH) {
34
            $statement = $this->database()->prepare("
35
            SELECT *
36
                FROM `" . $this->databaseTable() . "`
37
                WHERE
38
                  `screen_name` = :screen_name
39
        ");
40
            if ($statement->execute(['screen_name' => $_screen_name])) {
41
                return $this->instantiateObject($statement->fetch(), $params);
42
            }
43
        }
44
        return null;
45
    }
46
47
    protected function instantiateListedObject($databaseRow, $params)
48
    {
49
        return $this->instantiateObject($databaseRow, $params);
50
    }
51
}
52