FAQ PHP
FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
- 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
);
?>