PHP ver gevorderde |
|
Beste,
Ik heb de opdracht gekregen om een beheer klasse te schrijven tussen de database en de applicatie. De manager moet query's kunnen bouwen, zodat de query's zo goed en veilig mogelijk in de database komen te staan (denk dus aan $sql->Add(); $sql->Delete();)
Nu is het zo dat ik het mogelijk maak om tabellen volledig op te slaan in de klasse (tabelnaam + velden). De velden hebben de mogelijkheid om vartype's te forceren. een stukje voorbeeldcode maakt dit wellicht duidelijker:
require_once dirname(__FILE__) . '/plugin/mandb/mandb.class.php';
try {
$o_ManDB = new ManDB();
$o_ManDB->SelectType('mysql');
$o_ManDB->LoadDriver();
$b_SetTable = $o_ManDB->mysql->SetTable('berichten',
array('id' => 'int',
'naam' => 'string',
'bericht' => 'mixed',
'datum' => 'date'));
$o_ManDB->mysql->Add(array(
1, 'Arjan', 'Cool bericht', '[command:NOW():]'));
echo $o_ManDB->mysql->GetQuery();
$o_ManDB->mysql->Execute();
}
catch(MandbException $e) {
echo 'De volgende fout trad op:<br />'.$e->getMessage();
}
require_once dirname(__FILE__) . '/plugin/mandb/mandb.class.php'; try { $o_ManDB = new ManDB(); $o_ManDB->SelectType('mysql'); $o_ManDB->LoadDriver(); $b_SetTable = $o_ManDB->mysql->SetTable('berichten', 'naam' => 'string', 'bericht' => 'mixed', 'datum' => 'date')); $o_ManDB->mysql->Add(array( 1, 'Arjan', 'Cool bericht', '[command:NOW():]')); echo $o_ManDB->mysql->GetQuery(); $o_ManDB->mysql->Execute(); } catch(MandbException $e) { echo 'De volgende fout trad op:<br />'.$e->getMessage(); }
Nu zit ik met een aantal vragen/probleempjes die ik wil oplossen om het systeem zo optimaal mogelijk te maken.
1] Performance, door alle lussen waar de query doorheen gaat word het systeem erg traag.. hebben jullie tips om code korter (SNELLER!) te schrijven.
2] Zoals je zo zal zien zitten nog niet alle opties er in, waar ik me in moet gaan verdiepen zijn het maken van selectquery's (denk aan JOIN/meerdere tabellen). Hoe zouden jullie dit oplossen?
Mapstructuur (url = code):
- mandb
- mandb.class.php > http://www.plaatscode.be/140616/
- exceptions.class.php
+ drivers
- mysql.inc.php
- global.inc.php > http://www.plaatscode.be/140642/
- adodb.inc.php
+ trunk
- vartype.inc.php > http://www.plaatscode.be/140617/
- mandb - mandb.class.php > http://www.plaatscode.be/140616/ - exceptions.class.php + drivers - global.inc .php > http ://www.plaatscode.be/140642/ - adodb.inc.php + trunk - vartype.inc.php > http://www.plaatscode.be/140617/
Mocht dit script goed beoordeeld worden en nodig zijn, dan ben ik bereid het te plaatsen in scripts (win/win situatie ).
- Edit 10:30
Ik weet dat ik bij add nog rekening moet houden met autonummering.
Wellicht mag de regex ook nog veranderd worden.
+ Voorbeeld even iets aangepast ivm functionaliteit die veranderd is
- Edit 7/2 09:43
Autonummering implementatie klaar
+ bump
|