Ik heb voor een project een DbConnection class nodig die de volgende dingen doet:
Ik heb aan de hand hiervan het volgende UML klassediagram opgesteld:

De bedoeling is dus dat bijvoorbeeld execPrepStatement zoiets zou moeten worden:
Let op: code zuig ik net uit m'n duim, klopt niet helemaal met de UML en is misschien zelfs fout, maar het gaat om het idee
Een ander projectlid oppert voor het samenvoegen van de execPrepStatement en de execQuery methodes waardoor je zoiets moet doen:
Als ik hem goed begreep althans.
Weer een ander idee was om gewoon geen methodes te maken voor het uitvoeren van queries, maar de DbConnection klasse alleen te gebruiken voor het ophalen van een PDO connectie en eventueel voor het committen van queries.
Een hoop inspiratie dus, het ene idee misschien nog slechter dan de ander, maar daar ben je dan ook tweedejaars student voor.
Wat ik graag zou willen weten is hoe jullie zo'n klasse in zouden richten en of er misschien rare ontwerpfouten inzitten
- Connectie aanmaken met PDO. Er mag altijd maar 1 connectie zijn (Singleton)
- De class moet gewone queries en prepared statements uit moeten kunnen voeren via PDO
- De class moet ook een commit kunnen doen na een 'batch' van een aantal queries (dus bv. na 20 succesvolle queries volgt een commit)
Ik heb aan de hand hiervan het volgende UML klassediagram opgesteld:

De bedoeling is dus dat bijvoorbeeld execPrepStatement zoiets zou moeten worden:
PHP:
1
2
3
4
5
| public static function execPrepStatement($sSql, $aParams, $bLog) { $oPdo = self::getInstance(); $oQuery = $oPdo->prepare($sSql); $oQuery->execute($aParams); } |
Let op: code zuig ik net uit m'n duim, klopt niet helemaal met de UML en is misschien zelfs fout, maar het gaat om het idee
Een ander projectlid oppert voor het samenvoegen van de execPrepStatement en de execQuery methodes waardoor je zoiets moet doen:
PHP:
1
2
3
4
5
6
| $oPdo = DbConnection::getInstance(); $oQuery = $oPdo->prepare("SELECT bla FROM bla WHERE bla = ?"); $oQuery->bindParam(1, $bla, [extraparametersblabla]); DbConnection::execQuery($oQuery); |
Als ik hem goed begreep althans.
Weer een ander idee was om gewoon geen methodes te maken voor het uitvoeren van queries, maar de DbConnection klasse alleen te gebruiken voor het ophalen van een PDO connectie en eventueel voor het committen van queries.
Een hoop inspiratie dus, het ene idee misschien nog slechter dan de ander, maar daar ben je dan ook tweedejaars student voor.
Wat ik graag zou willen weten is hoe jullie zo'n klasse in zouden richten en of er misschien rare ontwerpfouten inzitten