Zend Framework – Céges Demo portál – Regisztráció – Adatbázis kapcsolat felépítése X. rész

Most, hogy megvan az adatbázis az űrlap, amit fel kell dolgoznunk indulhat az érdekesebb része a dolgoknak. Ahhoz, hogy ne toljunk ki magunkkal adatbázis kapcsolódás szempontjából, lehetőleg egy helyen tároljuk az adatbázis kapcsolat adatait. Miért is lehet ez fontos, gondoljunk bele, egy egyszerűbb alkalmazás is számtalanszor kapcsolódhat adatbázishoz, egy bonyolultabb meg milliószor, persze ott egyszerre több adatbázis kapcsolat is fent állhat, nehogy szűk keresztmetszet miatt összeomoljon a rendszer, de ha már csak azt vesszük figyelembe, hogy a portálunk alkalmazásunk költöztetni fogjuk, ne kelljen minden egyes kapcsolódásnál átírni az adatbázist, host-ot felhasználót, tartsuk egy helyen amíg lehet.

Már jó régen ugyan de létrehoztunk egy config.ini fájlt, ebben tároljuk az adatbázis kapcsolatát, valahogy ebben a formában:

[main]
db.host = "localhost"
db.username = "demo"
db.password = "demo"
db.dbname = "demo"
dirs.layouts = ../application/views/layouts/

Ugyancsak korábban elkészítettük a Globals.php-t, ahol a config.ini fájlban található konfigurációs adatokat kiolvassuk egy statikus getConfig() nevezetű függvénnyel. Ugyanezen függvény olvassa majd ki nekünk az adatbázis specifikus adatainkat is.

Most ugyanott a Globals.php-ben hozzunk létre egy, staticus getDBConnection() metódust. Leellenőrizzük, létezik e már adatbázis kapcsolat, ha igen akkor visszatérünk vele:

if (self::$_db!=null){
return self::$_db;
}//if (self::$_db!=null) end

Ha nem létezik akkor, létre kell hoznunk, ehhez a Zend_Db::factory() metódusát használjuk, amelynek bemenete az adatbázis specifikus kapcsolódási adatok egy tömbje. Meg kell adni az adatbázis típusát, config.ini-ből beolvasott host-ot, adatbázis felhasználót, adatbázis felhasználó jelszavát, adatbázis nevét, illetve beállítjuk, hogy az UTF-8 kódolás használatát (egy többnyelvű portál feliratai helyett ne kirx kraxok jelenjenek meg, ha adatbázisban tároljuk őket). Ezt az adatbázis kapcsolatot beállítjuk alapértelmezettnek, majd visszatérünk vele. Íme a Globals.php kódja teljes egészében:

<?php
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Db');
Zend_Loader::loadClass('Zend_Db_Table');
Zend_Loader::loadClass('Zend_Config_Ini');
class Globals{
private static $_db = null;
private static $_config = null;
public function __construct()
{
throw new Zend_Exception('You cannot instantiate Globals.php! It is static only.');
}
public static function getConfig()
{
if (self::$_config != null) {
return self::$_config;
}//if (self::$_config != null) end
self::$_config = new Zend_Config_Ini(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.ini', 'main', true);
return self::$_config;
}
static public function getDBConnection()
{
if (self::$_db!=null){
return self::$_db;
}//if (self::$_db!=null) end
self::$_db =Zend_Db::factory('Pdo_Mysql',
array('host'=> self::getConfig()->db->host,
'username' => self::getConfig()->db->username,
'password' => self::getConfig()->db->password,
'dbname' => self::getConfig()->db->dbname,
'driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')));
Zend_Db_Table::setDefaultAdapter(self::$_db);
return self::$_db;
}
}//class Globals
?>

A könnyű hordozhatóság, telepíthetőség, konfiguráció miatt érdemes ezt a megoldást választani. Most már rendelkezünk adatbázissal, adatbázis kapcsolattal, felhasználó regisztrációs form-mal.

Reklámok

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s