PdoIterator   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 2
dl 0
loc 26
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 23 5
1
<?php
2
3
namespace itertools;
4
5
use Exception;
6
use PDO;
7
8
9
class PdoIterator extends TakeWhileIterator
10
{
11
	public function __construct(PDO $pdo, $query, $params = array(), $fetchMode = PDO::FETCH_OBJ)
12
	{
13
		$pdoStatement = null;
14
		$it = new CallbackIterator(function() use (& $pdoStatement, $pdo, $query, $params, $fetchMode) {
15
			if(null === $pdoStatement) {
16
				if(count($params) != 0) {
17
					$pdoStatement = $pdo->prepare($query);
18
					if(false === $pdoStatement) {
19
						throw new Exception('Invalid query');
20
					}
21
					$pdoStatement->execute($params);
22
				} else {
23
					$pdoStatement = $pdo->query($query);
24
				}
25
				if(false === $pdoStatement) {
26
					throw new Exception('Invalid query');
27
				}
28
				$pdoStatement->setFetchMode($fetchMode);
29
			}
30
			return $pdoStatement->fetch();
31
		});
32
		parent::__construct($it, function($r) { return $r !== false; });
33
	}
34
}
35
36