Aujourd’hui nous allons voir un exemple pour la manipulation de la classe eZPersistentObject, avec cette dernière, il est possible de créer, lire, modifier et supprimer des objets dans la base de données sans écrire des requêtes SQL. Cette classe est responsable de persister les objets dans la base de données. On peut voir cette classe comme une couche d’abstraction entre l’application et la base de données. Souvent des classes qui stockent les données dans la base de données héritent de’eZPersistentObject.
Dans un premier temps nous allons créer notre table ‘notification’
CREATE TABLE notification ( id INT(11) NOT NULL, client_id INT(11) NOT NULL, code_notif VARCHAR(11) NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Maintenant nous allons créer notre classe eZInformationNotification qui hérite de la classe eZPersistentObject
Dans notre cas le chemin de la classe sera extension/ezsite/classes/ezinformationnotification.php
<?php class eZInformationNotification extends eZPersistentObject { public function __construct( $row ) { parent::eZPersistentObject( $row ); } static function definition() { return array( 'fields' => array('id' => array('name' => 'ID','datatype' => 'integer','default' => '','required' => true), 'client_id' => array( 'name' => 'IdClient','datatype' => 'integer','default' => '','required' => false), 'code_notif' => array( 'name' => 'CodeNotif','datatype' => 'string','default' => '','required' => false )), 'keys' => array('id'), 'increment_key' => 'id', 'class_name' => 'eZInformationNotification', 'name' => 'notifications' ); } static function create( array $row ) { return new self( $row ); } } ?>
La méthode la plus importante est : definition(). Elle définit la structure de l’objet eZInformationNotification, en spécifiant la table et les colonnes où les données seront stockées.
Lorsque vous créez une classe qui hérite de la classe eZPersistentObject, vous devez implémenter cette fonction.
N’oubliez pas de lancer la commande depuis l’arborescence
$> php bin/ php/ ezpgenerateautoloads.php –-e -p
Maintenant nous allons faire des tests pour voir un peu ce que nous avons fait, pour cela j’ai crée un module (voir comment créer un module)
<?php // Nous avons donnée que des exemple simple // ça sera par exemple l'identifiant de client $client_id = 10; $code_notif = 'NOTIF12'; // Pour la création et l'enregistrement $row = array( 'id' => '', 'client_id' => $client_id, 'code_notif' => $code_notif ); $notification = eZInformationNotification::create($row); $notification->store(); // Récupérer les objets $cond = array('client_id' => 10); $objetcs = eZPersistentObject::fetchObjectList( eZInformationNotification::definition(), null, $cond ); foreach($objetcs as $obj) { echo $obj->attribute('client_id'); echo "<br />"; } // Mise à jour des objets $cond = array('client_id' => 10); $simpleObjet = eZPersistentObject::fetchObject( eZInformationNotification::definition(), null, $cond ); $simpleObjet->setAttribute('client_id',12); $simpleObjet->store(); // Supression des objets eZPersistentObject::removeObject( eZInformationNotification::definition(), $cond ); ?>
Noter svp que nous avons utilisé les méthodes de la classe eZPersistenObject, donc pour les fonctionnalités de base et même plus, ce n’est pas la peine de réinventer la roue, sinon on peut faire nos propres méthodes dans notre classe créée « eZInformationNotification »
Nous avons vu comment utiliser la classe eZPersistentObject avec des exemples simples, vous pouvez voir d’autre exemple un peu compliqué.