Completed
Push — master ( 1337ee...b15437 )
by Wanderson
01:57
created

Database::validate()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 1
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace Win\Connection;
4
5
/**
6
 * Conexão com banco de dados
7
 *
8
 */
9
use PDO;
10
use Win\Mvc\Application;
11
12
abstract class Database {
13
14
	/** @var Database */
15
	protected static $instance;
16
17
	/** @var PDO */
18
	protected $pdo;
19
20
	/**
21
	 * Cria e retorna conexao PDO
22
	 * @param string[] $dbConfig
23
	 * @return PDO
24
	 */
25
	abstract protected function connect(&$dbConfig);
26
27
	/** @return PDO */
28
	final public function getPDO() {
29
		return $this->pdo;
30
	}
31
32
	/** @return static */
33
	final public static function instance() {
34
		return self::$instance;
35
	}
36
37
	/**
38
	 * Cria uma conexão com um banco de dados
39
	 * @param string[] $dbConfig
40
	 */
41
	public function __construct($dbConfig) {
42
		self::$instance = $this;
43
		try {
44
			$this->pdo = $this->connect($dbConfig);
45
			$this->pdo->exec("set names utf8");
46
		} catch (\PDOException $ex) {
47
			Application::app()->errorPage(503);
48
			Application::app()->view->addData('error', $ex->getMessage());
49
		}
50
	}
51
52
	/**
53
	 * Redireciona para 503 caso não haja conexao
54
	 * @param boolean $connection
55
	 */
56
	public static function validate($connection = false) {
57
		if ($connection === false):
58
			Application::app()->errorPage(503);
59
		endif;
60
	}
61
62
}
63