Je ne prétends aucunement obtenir un résultat comparable à MySQL ou autre, loin de là même (bien que je n'ai pas encore testé de gros flots de données ou même exécuté un seul test de performance), ce projet était avant tout un moyen de voir comment on pouvait reproduire le fonctionnement d'une base de donnée.
Pour le moment xmlBDD est assez basique, il faudra voir si à terme je développe plus et l'améliore.
Un exemple d'utilisation :
// ouverture de la BDD magasin
$bdd = new xmlBDD("bdd/magasin");
//##########################################################################################################################
//##########################################################################################################################
// Création de la table jouet
$bdd->create("jouet",array(
'idJouet' => array('auto-increment' => true, 'primary' => true, 'type' => "integer", 'taille' => 10),
'nomJouet' => array('type' => "text", 'taille' => 15),
'descriptionJouet' => array('type' => "text", 'taille' => 300),
'dateCreationJouet' => array('type' => "datetime")
));
//##########################################################################################################################
//##########################################################################################################################
// insertion d'un jeu de données
$bdd->insert(array( 'idJouet' => 1,
'nomJouet' => "Peluche",
'descriptionJouet' => "Une peluche toute douce.",
'dateCreationJouet' => date("d/m/Y H:i:s")
),
"jouet");
$bdd->insert(array( 'idJouet' => 2,
'nomJouet' => "Casse-tête",
'descriptionJouet' => "C'est un casse-tête en bois.",
'dateCreationJouet' => date("d/m/Y")
),
"jouet");
$bdd->insert(array( 'idJouet' => 3,
'nomJouet' => "Ballon",
'descriptionJouet' => "Un ballon rouge gonflable.",
'dateCreationJouet' => time()
),
"jouet");
// SELECT * FROM `jouet` WHERE `idJouet` = 1;
$data = $bdd->select('*',"jouet",array('idJouet' => 1));
// SELECT `nomJouet`, `descriptionJouet` FROM `jouet` WHERE `descriptionJouet` LIKE "Un%";
$data = $bdd->select(array("nomJouet", "descriptionJouet"),"jouet",array('descriptionJouet' => array('op' => "like", 'val' => "Un%")));
// SELECT `idJouet`, `nomJouet` FROM `jouet` WHERE `idJouet` > 2;
$data = $bdd->select(array("idJouet", "nomJouet"),"jouet",array('idJouet' => array('op' => ">", 'val' => 2)));
La classe permet toutes les opérations basiques (create, insert, select, update, delete) avec les opérateurs de base (=, !=, >, >=, <, <= et like) pour trois types de données (text, integer, datetime).Le projet est disponible en téléchargement (et consultation, ainsi qu'un fichier de demo) sur github : https://github.com/xTG/xmlBDD
Je suis ouvert à toute remarque sur le code (le but de ce projet étant en grande partie de m'améliorer).
