Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
CRAP | |
0.00% |
0 / 46 |
Dbal | |
0.00% |
0 / 1 |
|
0.00% |
0 / 11 |
272 | |
0.00% |
0 / 46 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getPdo | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
query | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
queryOne | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
queryAsStmt | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
execute | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
prepare | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 14 |
|||
begin | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
rollback | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
commit | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
close | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
<?php | |
namespace Puyo\Db; | |
/** | |
* PDO をさらに抽象化したもの | |
* @uses ext-pdo | |
*/ | |
class Dbal | |
{ | |
/** @var \PDO */ | |
protected $pdo; | |
public function __construct(\PDO $pdo) { | |
$this->pdo = $pdo; | |
} | |
public function getPdo() { | |
return $this->pdo; | |
} | |
/** | |
* @param string $sql | |
* @param string[]|int[] $values | |
* @return array 複数行 | |
*/ | |
public function query($sql, $values=[]) { | |
$stmt = $this->prepare($sql, $values); | |
$stmt->execute(); | |
return $stmt->fetchAll(\PDO::FETCH_ASSOC); | |
} | |
/** | |
* @param string $sql | |
* @param string[]|int[] $values | |
* @return array|null 単一行 | |
*/ | |
public function queryOne($sql, $values=[]) { | |
$stmt = $this->prepare($sql, $values); | |
$stmt->execute(); | |
$firstRow = $stmt->fetch(\PDO::FETCH_ASSOC); | |
if($firstRow === false) { | |
return null; | |
} | |
return $firstRow; | |
} | |
/** | |
* @param string $sql | |
* @param string[]|int[] $values | |
* @return \PDOStatement | |
*/ | |
public function queryAsStmt($sql, $values=[]) { | |
$stmt = $this->prepare($sql, $values); | |
$stmt->execute(); | |
return $stmt; | |
} | |
/** | |
* @param string $sql | |
* @param string[]|int[] $values | |
* @return int 更新件数 | |
*/ | |
public function execute($sql, $values=[]) { | |
$stmt = $this->prepare($sql, $values); | |
$stmt->execute(); | |
return $stmt->rowCount(); | |
} | |
/** | |
* @param string $sql | |
* @param string[]|int[] $values | |
* @return \PDOStatement | |
*/ | |
protected function prepare($sql, $values=[]) { | |
$stmt = $this->pdo->prepare($sql); | |
foreach($values as $name=>$val) { | |
if(is_int($val)) { | |
$stmt->bindValue($name, $val, \PDO::PARAM_INT); | |
} elseif(is_bool($val)) { | |
$stmt->bindValue($name, $val, \PDO::PARAM_BOOL); | |
} elseif(is_null($val)) { | |
$stmt->bindValue($name, $val, \PDO::PARAM_NULL); | |
} else { | |
$stmt->bindValue($name, $val, \PDO::PARAM_STR); | |
} | |
} | |
return $stmt; | |
} | |
public function begin() { | |
return $this->pdo->beginTransaction(); | |
} | |
public function rollback() { | |
return $this->pdo->rollBack(); | |
} | |
public function commit() { | |
return $this->pdo->commit(); | |
} | |
public function close() { | |
$this->pdo = null; | |
} | |
} |