Stig Sørensen skrev:
> Lyder som nogle gode idéer. Mener bestemt ikke jeg kan gøre noget
> bedre, men ville blive glad hvis du kunne fortælle mig lidt om
> konceptet bag dine databaselagsobjekt.
Konceptet er at jeg har et overordnet databaselag som egentlig står for
al behandling af mine databasekald.
Derudover har jeg så, eksempelvis, en klasse der hedder cUsers.
class cUsers extends cMysql
{
/**********************************
/* Start __construct() fra cMysql
/* som forbinder til databasen
/**********************************/
public function __construct()
{
parent::__construct();
}
/**********************************
/* Her henter jeg bruger info
/* fra tabellen og returner
/* resultatet i et associeret
/* array (funktion fra cMysql)
**********************************/
public function getUserInfo($user_id)
{
$sql = "SELECT * FROM users WHERE user_id=".$user_id;
$this->query($sql);
return $this->result2array();
}
/**********************************
/* Her henter jeg brugerens
/* email adresse fra tabellen
/* og returner resultatet som en
/* streng hvis linies er fundet
/* og eller returneres bool(false)
**********************************/
public function getUserEmail($user_id)
{
$sql = "SELECT mail FROM users WHERE user_id=".$user_id;
return $this->queryItem($sql);
}
}
Jeg ved så at cMysql::result2array() altid vil returnere et array til
mig med det jeg forventer at hente fra databasen.
cMysql::queryItem() bruger jeg til at hente et enkelt felt fra en given
kolonne. Meget rar at have nogen gange.
Fordelen i laget er så at du i dit databaselag altid ved hvilke
funktioner du har til rådighed og hvordan de skal bruges.
På den måde kan jeg nemt overføre mine funktionaliteter til en anden
type database. (der kan være forskellige i sql'en ,men de er vist så små
at man jo er glad for at man har samlet al sin sql i nyttige klasser og
ikke har noget sql i frontenden ;) )
Ligeledes er det nemt for mig at differenciere på om jeg kan bruge
cMysql objektet eller cMysqli objektet da de begge har de samme
funktioner, men cMysql kun bruges på servere hvor cMysqli ikke tilbydes,
uden at jeg skal rette i alle mine scripts kildekode. Jeg er også igang
med at lave et lag til PostgreSQL, da der jo er nogen der ynder at bruge
det istedet.
Håber det gav lidt klarhed?
--
Dan Storm - storm at err0r dot dk /
http://err0r.dk/Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!