plateforme coopérative de partage d'information 1.9 Version de PLOOPI
PLOOPI est une plateforme web de travail collaboratif (GNU GPLv2) permettant à ses utilisateurs d'échanger et de diffuser des données. Il s'agit d'un logiciel sécurisé, robuste et optimisé dont le code source a été de nombreuses fois audité. PLOOPI se présente également sous la forme d'un framework de développement permettant de faciliter la mise en oeuvre de modules métiers basés sur des fonctionnalités avancées de travail collaboratif.

Documentation

La classe « data_object »

Présentation du concept

La classe “data_object” est une classe abstraite permettant de faciliter la création d’une classe associée à une table de la base données.

La classe ainsi créée a pour objectif d’exécuter les opérations de base sur une table en évitant d’avoir recours à une requête SQL.

Chaque enregistrement de la base de données est ainsi vu comme un objet avec notamment des méthodes d’ouverture, d’enregistrement ou d’affectation automatique de valeurs (provenant de formulaires par exemple).

Il est en général recommandé de créer une classe dédiée pour chaque table d’un module.
Vous pouvez ainsi commencer en créer une structure assez basique qui hérite de “data_object” :

1
2
3
4
5
6
7
8
9
10
11
<?
include_once './include/classes/data_object.php';
 
class ma_classe extends data_object
{
    function ma_classe() // constructeur
    {
        parent::data_object('ma_table', 'id'); // instanciation de data_object sur la table "ma_table" avec pour clé "id"
    }
}
?>

Il est ensuite possible d’ajouter des propriétés et des méthodes spécifique à votre classe.

Méthodes utiles

Parmi les méthodes très utiles héritées de “data_object”, vous pourrez notamment utiliser :

  • data_object::open($id1, $id2, … )
Initialise l’objet en ouvrant un enregistrement lu dans la base de donnée à partir de sa clé primaire (qui peut être composée de plusieurs champs). Les champs de l’enregistrement sont disponibles au travers de la propriété publique “fields” dans un tableau associatif.
  • data_object::save()
Enregistre l’objet sous forme d’un enregistrement dans la base de données. Il peut s’agir d’un nouvel enregistrement (INSERT) ou d’une mise à jour d’un enregistrement existant (UPDATE). Dans le cas d’une utilisation de clé primaire en “autoincrement, la méthode “save” retourne la valeur générée.
  • data_object::delete()
Supprime l’enregistrement dans la base de données associé à l’objet courant.
  • data_object::setvalues($values, $prefix)
Affecte les valeurs d’un tableau associatif ($values) aux propriétés de l’objet (équivalents aux champs de l’enregistrement dans la table). Les clés du tableau associatif peuvent être “filtrée” grâce à un préfixe ($prefix).
  • data_object::init_description()
Initialise les propriétés de l’objet avec la structure de la table.

Exemples d’utilisation

Création d’un enregistrement

1
2
3
4
5
6
7
8
<?
$maClasse = new ma_classe(); // instanciation de mon objet
 
$maClasse->fields['champ1'] = 'valeur du champ1' // affectation de valeurs aux champs
$maClasse->fields['champ2'] = 'valeur du champ2'
 
$intNouvelId = $maClasse->save(); // création de l'enregistrement dans la base de données
?>

Modification d’un enregistrement

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$arrValeurs = array(
    'prefix_champ1' => 'nouvelle valeur'
    'prefix_champ2' => 'nouvelle valeur'
); // Création d'un tableau de valeurs
 
$maClasse2 = ma_classe(); // instanciation de mon 2e objet
 
$maClasse2->open($intNouvelId); // ouverture de l'enregistrement précédemment créé
 
$maClasse->setvalues($arrValeurs, 'prefix_'); // modification des valeurs de l'objet à partir d'un tableau, on peut également se servir de $_POST ou $_GET
 
$maClasse2->save(); // enregistrement de la modification dans la base de données
?>

Suppression d’un enregistrement

1
2
3
4
5
6
7
<?
$maClasse3 = ma_classe(); // instanciation de mon 2e objet
 
$maClasse3->open($intNouvelId); // ouverture de l'enregistrement précédemment créé
 
$maClasse3->delete(); // suppression de l'enregistrement dans la base de données
?>





Retour en haut de la page