Objets
-
Français
- Accueil
-
Section utilisateur
- Utilisateur de Open .node ?
- Créer un ticket
-
Section développeur
- Vous êtes développeur ?
- Aider au développement
-
A propos de la conception
- Introduction
- Installation
- Fonctionnement général
- Les Objets
- Des icônes
- Les contributeurs
-
Les Mailing-lists
- open@dotnode.com
-
Trac Guide
- Index
- View all wiki pages
Avant propos
"Style d'objet à créer/utiliser" ... c'est à dire la facon de construire les objets.
Dès le départ on a une question à se poser, c'est le passage du $db dans l'objet, 2 options :
- On file une référence au constructeur sur le DB qui existe deja
- On laisse l'objet se créer son $db lui-même (et utiliser la "puissance" du singloton/factory qu'est DB::connect)
L'avantage de la première méthode est d'être simple, mais on doit passer a chaque fois ce parametre $db à la création de l'objet, ce qui oblige a creer l'objet $db avant l'appel à la classe. L'avantage du second est d'être indépendant de son "context", ... au cas ou il n'y a pas de DB, il n'en crée pas. S'il y a déjà, c'est réutilisé. On peut donc utiliser l'objet sans se soucier de cette partie. Par contre, il faut toujours récuperer les params de connexion (par un global par exemple), ajuster les options, vérifier que le $db est bien créer etc ... pour chaque objet (ce qui ne va pas dans le sens de la factorisation voulu). Pour corriger ca, on peut imaginer une super classe qui contiendrait la fonction de connexion à la DB. Et chaque class devant utiliser la DB en hériterait.
Communauté
On a besoin d'afficher:
- Sa photo et sa miniature (ptet plusieurs a terme)
- Son nom
- Son proprio
- Ses topics d'un forum
- Ses evenements
- Ses utilisateurs
- Ses communautés voisines
- Sa catégorie
- Ses infos a la con (pays, date de création, modération ou non)
On a besoin d'interagir avec les objets:
- Forum (et ce qui en découle, genre Topic tout ca si on va aussi loin que ca dans les objets)
- Event (idem)
- Category
- User
- Community
Méthodes publiques à écrire (je pars du principe que l'on pourra carrement donner l'objet à Smarty pour qu'il appelle les methodes si on se demerde bien:
class MappingDB {
var $db; // The PEAR DB Object
var $db_table; // DB Table to map
var $table_fields; // Table field that can be modified directly by setProp
function setProp($name, $value) {
if(in_array($name, $this->table_fields) {
$this->db->query('UPDATE ! SET !=?', array($this->db_table, $name, $value));
}
}
}
class Community extends MappingDB {
// FIXME
var $db_table = 'community';
var $db_fields = array('name', 'description', 'moderated', 'country'); // TODO later: Add a language field in the DB
function Community(&$db) {
$this->db = $db;
}
}
... continuez ici pour les autres classes.
