Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo
Sommaire > Bases de données > Mapping objet relationnel (ORM) et persistance > eZ Components - PersistentObject
        Qu'est-ce qu'eZC PersistentObject ?
        Comment installer eZC PersistentObject ?
        Comment fonctionne eZC PersistentObject ?
        Comment définir une persistance avec eZC PersistentObject ?
        Comment rendre un objet compatible eZC PersistentObject ?
        Comment lire les enregistrements d'une table avec eZC PersistentObject ?
        Commment insérer des données avec eZC PersistentObject ?
        Comment modifier un enregistrement d'une table avec eZC PersistentObject ?
        Comment supprimer un enregistrement d'une table avec eZC PersistentObject ?



Qu'est-ce qu'eZC PersistentObject ?
auteur : is_null
Cette bibliothèque utilise PDO, écrite en PHP.

lien : faq Qu'est-ce que PDO ?

Comment installer eZC PersistentObject ?
auteur : is_null
Cette bibliothèque a besoin d'eZ Components pour fonctionner. Particulièrement le composant Database, qui permet l'abstraction de bases de données.

Sont actuellement supportés :
  • SQLite ;
  • Oracle ;
  • PostgrSQL ;
  • MySQL.
lien : fr Détails sur l'installation

Comment fonctionne eZC PersistentObject ?
auteur : is_null
Il faut générer un schema de la base de données avec le composant DatabaseSchema.
<?php
// Créer le schema depuis un fichier XML :
$schema = ezcDbSchema::createFromFile( 'xml', 'schema.xml' );
 
// Créer le schema depuis une base de données
$db = ezcDbFactory::create( 'mysql://user:password@host/database' );
$schema = ezcDbSchema::createFromDb( $db );
 
// Sauvegarder le schema sous forme de tableau dans un fichier PHP
$schema->writeToFile( 'array', 'schema.php' );
 
// Créer les tables dans la base de données à partir du schema
$schema->writeToDb( $db );
?>

La bibliothèque utilisera une définition des objets persistants pour fonctionner.

lien : en http://ezcomponents.org/docs/api/latest/introduction_DatabaseSchema.html

Comment définir une persistance avec eZC PersistentObject ?
auteur : is_null
On utilisera le composant PersistentObjectDatabaseSchemaTiein.

Il faut se placer dans le répertoire racine d'eZ Components (classiquement /usr/share/php/ezc) puis exécuter :
$ php PersistentObjectDatabaseSchemaTiein/rungenerator.php \
    -s chemin/vers/fichier/de/schema -f array chemin/vers/dossier/de/definitions/d/objets/persistents/

Notez qu'accessoirement, on peut ajouter un paramètre pour générer les objets :
$ php PersistentObjectDatabaseSchemaTiein/rungenerator.php \
-s chemin/vers/fichier/de/schema -f array chemin/vers/dossier/de/definitions/d/objets/persistents/ chemin/vers/dossier/d/objets/
lien : http://ezcomponents.org/docs/api/latest/introduction_PersistentObjectDatabaseSchemaTiein.html
lien : http://ezcomponents.org/docs/api/latest/introduction_PersistentObject.html

Comment rendre un objet compatible eZC PersistentObject ?
auteur : is_null
Il suffit d'ajouter les méthodes getState() et setState().
Par exemple :
<?php
class Personne
{
    public $nom = null;
    public $id = null;
    
    public function getState()
    {
        return array(
            'id'    => $this->id,
            'nom'   => $this->nom,
        );
    }
    
    public function setState( array $status )
    {
        $this->id   = $status->id;
        $this->nom  = $status->nom;
    }
}
?>
Voici à quoi ressemblerait la définition de sa persistance :
<?php
$def = new ezcPersistentObjectDefinition();
$def->table = "persons";
$def->class = "Personne";
 
$def->idProperty = new ezcPersistentObjectIdProperty;
$def->idProperty->columnName = 'id';
$def->idProperty->propertyName = 'id';
$def->idProperty->generator = new ezcPersistentGeneratorDefinition( 'ezcPersistentSequenceGenerator' );
 
$def->properties['nom'] = new ezcPersistentObjectProperty;
$def->properties['nom']->columnName = 'full_name';
$def->properties['nom']->propertyName = 'nom';
$def->properties['nom']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING;
 
return $def;
?>

C'est dans ce fichier qu'il faudra ajouter les définitions de relations.


Comment lire les enregistrements d'une table avec eZC PersistentObject ?
auteur : is_null
Il faut d'abord un objet de session.
<?php
$session = new ezcPersistentSession(
    ezcDbInstance::get(),
    new ezcPersistentCacheManager( new ezcPersistentCodeManager( "path/to/definitions" ) )
);
 
// Il est utile d'utiliser la classe fournie pour faire maintenir une instance unique
ezcPersistentSessionInstance::set( $session );
 
// Dès lors, il sera possible d'accèder à la session comme cela :
$session = ezcPersistentSessionInstance::get();
 
// La manière la plus simple de charger un objet :
$personne = $session->load( 'Personne', $identifiant );
?>

Commment insérer des données avec eZC PersistentObject ?
auteur : is_null
<?php
$personne = new Personne();
$personne->nom = "Guybrush Threepwood";
$session = ezcPersistentSessionInstance::get();
$session->save( $personne );
?>

Comment modifier un enregistrement d'une table avec eZC PersistentObject ?
auteur : is_null
<?php
$session = ezcPersistentSessionInstance::get();
$personne = $session->load( 'Personne', $identifiant );
$personne->nom = "Guybrush Threepwood";
$session->update( $personne );
 
// Notez que vous pouvez également utiliser saveOrUpdate()
$session->saveOrUpdate( $personne );
?>

Comment supprimer un enregistrement d'une table avec eZC PersistentObject ?
auteur : is_null
<?php
$session = ezcPersistentSessionInstance::get();
$personne = $session->load( 'Personne', $identifiant );
$session->delete( $personne );
?>


Consultez les autres F.A.Q.


Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2003  Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. 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.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com