Jazyk PHP - pokračování
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.
// 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
Jen jedno připojení k databáz
Vzor Singleton pro připojení k DB
Vzor Singleton pro připojení k D
Připojení je obecně drahá záležitost
Připojení je obecně drahá záležitos
Nepřipojuji se tehdy, když uz spojením mám
Nepřipojuji se tehdy, když uz spojení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);
}
return $this->result;
return $this->result
}
}
// 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);
}
return $this->result;
return $this->result
}
}
OBSERVER
OBSERVE
(NĚKDY TÉŽ
(NĚKDY TÉŽ LISTENER
LISTENE )
Návrhový vzor
Návrhový vzo
Myšlenka
Myšlenk