Les entités que vous définirez en base de données et que vous serez amenées à utiliser sur vos projets sont appelés des collectors.
Ces derniers héritent tous d'une classe de base nommée la GenClass.
La GenClass se trouve dans le répertoire gabox/common
Cette classe est l'entité centrale de Gabox. Elle contient :
Chaque table que vous créez dans la base de données entraîne la création d'un collector correspondant.
NB : les tables sont préfixées par gen_
et le préfixe est supprimé pour construire le nom du collector
Exemple : table gen_produits collector produits
Le collector hérite directement de la GenClass et dispose donc des fonctions d'accès aux données sur la table qui lui correspond.
Les collectors sont stockées dans le tableau collector
de la GenClass (mais également dans le Displayer). Pour accéder au collector "produits", il suffit alors de faire un $this->collector['produits']
, et comme ce collector hérite de la GenClass, si l'on veut récupérer un produit en fonction de son id, nous pouvons faire un $this->collector['produits']->get($idProduit)
Gabox dispose d'un système de génération automatique des classes représentant les collectors. La génération est lancée :
?build=1
Lorsque vous créez une nouvelle table en base de données, vérifiez bien que le build s'est lancé, sinon le collector ne sera pas disponible.
Les classes générées sont stockées dans le dossier du projet, dans usr/{nom_projet}/classes/auto/{db_name}
. Le nom de la classe d'un collector est construit de la manière suivante : gen_
+ nom du collector, et elle étend donc GenClass.
La classe générée contient la liste des champs de la table dans un tableau $array_fields
.
Un fichier include.php est généré au même endroit et contient un tableau des collectors générés pour qu'ils soient inclus automatiquement.
Si vous souhaitez enrichir votre collector de fonctionnalités métier, il vous faut créer une classe portant le nom du collector et étendant ce dernier.
Vous pourrez y définir vos propres méthodes et propriétés.
Cette classe peut être stockée dans usr/{nom_projet}/classes
mais sera idéalement placée dans le répertoire classes du module associé au collector.
Exemple : pour le collector produits
class Produits extends gen_produits
(fichierusr/{nom_projet}/classes/produits.class.php
)