Jag pillade en del på min site häromdagen efter att jag läst upp om MVC efter tips i den här tråden
http://www.sweclockers.com/forum/showthread.php?s=&threadid=7...
Så nu satte jag mig ner och lade alla viktiga kodsnuttar inom ett visst område, röstningen, i små funktioner, vilket blev betydligt mer lätthanterligt och snyggt på "Controller" sidan. Dock stötte jag på ett problem med databasanslutningen.
Tidigare har jag haft en databasfil som sett ut ungefär såhär:
<?
$db_adress = "localhost";
$db_username = "root";
$db_password = "";
// Database names
$db_name = "belle";
$table_users = "adam";
// OSV OSV
$mysql_handler = mysql_connect ($db_adress, $db_username, $db_password);
mysql_select_db($db_name);
if (!$mysql_handler)
die ("Could not connect!");
?>
På varje sida jag sedan behöver göra något mot databasen så inkluderar jag endast denna fil och så är jag igång direkt. Problemet som infann sig nu är att ingen av dessa variabler är tillgängliga till funktionerna. Visserligen skulle jag kunna använda global för att kunna nå de iallafall, eller t.om. inkludera filen i varje funktion, men det känns som ett väldigt fult trick och bör kunna göras på ett smartare vis.
Min andra tanke var nu att kapsla in dessa röstningsfunktioner i en röstningsklass. När ett röstningsobjekt skapas, skickar man en referens till ett PDO objekt och en referens till en array som innehåller tabelluppgifterna till konstruktorn.
Alltså får jag följande struktur:
dbh.inc - Innehåller en kodsnutt som skapar $dbh vilket är ett PDO objekt. Filen inkluderas på sidor där databashantering ska hanteras. Innehåller även $tbh som innehåller tabellnamnen.
votes.php - Innehåller klassen Votes, som tar en referens till $dbh och $tbh.
Det jag undrar är om det finns någon anledning för varför det här är ett dåligt sätt att angripa problemet, och jag skulle gärna vilja se hur ni brukar göra, då jag sett flera varianter på nätet som jag inte riktigt gillar och skulle behöva lite inspiration från era empiriska studier.