FAQ PHP

FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
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 ?
Cette bibliothèque utilise PDO, écrite en PHP.
Lien : Qu'est-ce que PDO ?
Cette bibliothèque a besoin d'eZ Components pour fonctionner. Particulièrement le composant Database, qui permet l'abstraction de bases de données.
- SQLite ;
- Oracle ;
- PostgrSQL ;
- MySQL.
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.
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
Il suffit d'ajouter les méthodes getState() et setState().
<?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;
}
}
?><?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.
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 );
?>


