Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
FORUM PHP FAQ PHP COURS PHP SOURCES PHP LIVRES PHP SCRIPTS PHP OUTILS PHP COMPARATIFS PHP TV Zend Framework

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

			$driverz = 'mysql';
			

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

				require_once('core/PMO_Controler.php');
				
				$object->commit();
			

VIII. Suppression d'un objet en base

L'objet peut être supprimé de la base.
Suppresion d'un objet en base

				require_once('core/PMO_Controler.php');
				
				$object->delete();
			


Valid XHTML 1.1!Valid CSS!

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.

Responsable bénévole de la rubrique PHP : Guillaume Rossolini (Yogui) - Contacter par EMail :
Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.