PhpMyObject les nouveautés de la version 0.07
Date de publication : 28/07/2007 , Date de mise à jour : 28/07/2007
Par
Nicolas BOITEUX
PhpMyObject est un Object relational Mapping, Mapper de bases de données qui transforme les résultats de requêtes SQL en objets.
I. Introduction
II. Support PDO Officiel
III. La Hash Table
IV. Espace de nommage
V. Structure d'un objet
VI. Creation d'un objet conforme au schéma d'une table
VI. Commit d'un objet
VIII. Suppression d'un objet en base
I. Introduction
Le but de cet article est de présenter les améliorations apportées par la dernière version 0.07.
Il s'agit d'améliorations significatives car elles étendent à la fois les possibilités, et améliorent les performances de PMO.
II. Support PDO Officiel
La version 0.07 implémente la couche d'abstraction sgbd: PDO. PhpMyObject fonctionne avec les plus grand SGBD actuel : Oracle, Interbase, Postgresql, Mysql, etc ... Il est également encore possible d'utiliser l'ancien driver mysql et postgresql.
| Modification du fichier config.php pour utiliser mysql via PDO |
$driverz = 'pdo';
$pdodriverz = 'mysql';
|
| Modification du fichier config.php pour utiliser oracle via PDO |
$driverz = 'pdo';
$pdodriverz = 'oracle';
|
| Modification du fichier config.php pour utiliser mysql via le driver de PMO |
|
III. La Hash Table
Pmo incorpore désormais une table de hashage dans le but d'accélerer le traitement des données. Cette table de hashage permet notamment à PMO de vérifier plus rapidement l'unicité des objets. Les optimisations du code et l'utilisation de cette table de hashage ont
permis d'augmenter de façon très significative les performances.
A titre d'exemple voici quelques benchmarks pratiqué sur la base Sakila (disponible sur le site de mysql) table film_actor qui remplisse la $map d'objets.
require_once('core/PMO_MyControler.php');
$controler = new MyControler();
$map = $controler->queryControler("SELECT * FROM film_actor limit 3000;");
|
| |
Pmo v 0.06 |
Pmo v0.07 |
| Lecture et création de 10 objets |
0,01-0,04 sec |
0,01-0,04 sec |
| Lecture et création de 100 objets |
0,15 sec |
0,04 sec |
| Lecture et création de 1000 objets |
3 sec |
0,11 sec |
| Lecture et création de 2000 objets |
13 sec |
0,16 sec |
| lecture et création de 3000 objets |
29 sec |
0,20 sec |
IV. Espace de nommage
La version 0.07 définit l'espace de nommage des interfaces, et classes PMO.
| convention de nommage |
Chaque interface est préfixée par : PMO_
Chaque class est préfixée par : PMO_My_ pour indiquer une implémentation de l'interface.
|
V. Structure d'un objet
Les objets intègrent désormais dans leurs structures une référence [object_table:protected] => vers un objet MyTable. L'objet MyTable décrit le schéma de la Table dont provient l'objet.
| structure d'un objet qui provient de la table rental |
[rental] => MyObject Object
(
[object_id:protected] => 0
[object_table:protected] => MyTable Object
(
[table_name:protected] => rental
[table_pk:protected] => rental_id
[table_attribute:protected] => Array
(
[rental_id] => PRI
[rental_date] => MUL
[inventory_id] => MUL
[customer_id] => MUL
[return_date] =>
[staff_id] => MUL
[last_update] =>
)
)
[object_attribute:protected] => Array
(
[rental_id] => 1
[rental_date] => 2005-05-24 22:53:30
[inventory_id] => 367
[customer_id] => 130
[return_date] => 2005-05-26 22:04:30
[staff_id] => 1
[last_update] => 2006-02-15 21:30:53
)
)
|
VI. Creation d'un objet conforme au schéma d'une table
La création d'un objet est désormais possible à partir du controleur. Le controleur va instancier un object conforme au schéma de la table qu'on lui passe en paramêtre, en initialisant tous les attributs de l'objet à blanc.
Le controleur initialise les attributs de l'objet en manipulant un objet MyTable qui lui renvoit une description du schéma de la table. Tant que l'objet n'est pas commité, les valeurs de ses attributs ne sont pas insérées dans la base de donnée.
| Creation d'un objet conforme au schéma de la table utilisateur |
require_once('core/PMO_Controler.php');
$object = $controler->createObject("utilisateur");
|
VI. Commit d'un objet
L'objet peut se commiter en base sans avoir à passer par le controleur. Commiter un objet en base signifie écrire tous les valeurs de ces attributs dans la table dont l'objet découle.
Ex: Commiter un objet utilisateur signifie enregistrer dans la table utilisateur une nouvelle entrée, dont les valeurs des colonnes de la table seront égales aux valeurs des attributs de l'objet.
| Commit d'un objet en base |
|
VIII. Suppression d'un objet en base
L'objet peut être supprimé de la base.
| Suppresion d'un objet en base |
|


Les sources présentées sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©
28/07/2007 Nicolas BOITEUX. Aucune reproduction,
même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.