Jak Začít?

Máš v počítači zápisky z přednášek
nebo jiné materiály ze školy?

Nahraj je na studentino.cz a získej
4 Kč za každý materiál
a 50 Kč za registraci!




Databáze - úvod

PDF
Stáhnout kompletní materiál zdarma (2.29 MB)

Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.

– databází je ale mnoho různých druhů (mysql, oracle, 
– všechny db implementují stejné rozhraní

Vzor Factory Impl 1/2

interface DBLayer {

public function connect($param);
public function query($sql);

}

class MySQLDBLayer implements DBLayer {

public function connect($params) {

// mysql_connect(....)

}
public function query($sql) {

// mysql_query(...)

}

}
class PGDBLayer implements DBLayer {

public function connect($params) {

//pg_connect(....)

}
public function query($sql) {

// pg_query(...)

}

}

Vzor Factory Impl 2/2

// vzor factory = tovarna na objekty
class DBFactory {

// zde to prijde!
// vim, ze vratim rozhrani typu DBLayer
public static function getDBLayer($type){

switch ($type) {

case "MySQL": return new MySQLDBLayer(); break;
case "PG": return new PGDBLayer(); break;
default: return new MySQLDBLayer();

}

}

}

Poznámka:
často se setkáme s implementací factory bez parametru. Ten je potom zjištěn v těle 
metody například z nějakého konfirugračního souboru. Rozhodnutí o použíté DB 
udělá uživatel při instalaci systému.

Jen jedno připojení k databázi

 Vzor Singleton pro připojení k DB

 Připojení je obecně drahá záležitost

 Nepřipojuji se tehdy, když uz spojením mám

// jedina trida, ktera umi vsechno s DB
class DB {

private static $instance = null;
private $db_link = null;
private $result = null;

private function __construct() {}
public static function getInstance() {

if (self::$instance == null) {

self::$instance =

new DB();

self::$instance->connect();

}
return self::$instance;

return self::$instance

}

public function connect() {

if ($this->db_link == null) {

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWD,

DB_NAME);

if (!$link) {

throw new DBException(mysqli_errno($link));

}
mysqli_select_db($link,DB_NAME);
$this->db_link = $link;

}
return $this->db_link;

}

// pokračování

public function query($sql) {

$this->connect();
$this->result = mysqli_query($this->db_link,$sql);
if (mysqli)
if (!$this->result) {

throw new DBException(mysqli_error($this->db_link), $sql);

Témata, do kterých materiál patří