kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 25 déc. 2005 à 18:23
En fait cette class s'inspire de la class XoopsObject et XoopsObjectHandler de xoops... elles permettent la manipulation de données issu de requetes MySQL mais d'une part ces class ne s'utilisent pas toutes seule (mais avec les class générant les requetes) et d'autre part ces class sont les class parentes de class plus complete qui ne concerne qu'une table de la base de donné car elle prennent en compte la structure de la table et les attributs des champs afin d'obtenir un meilleur traitement des données...
par ex la class XoopsUser qui hérite des propriétés de la class XoopsObject et qui est faite pour la table users de xoops... voici sont constructeur...
// for backward compatibility
if (isset($id)) {
if (is_array($id)) {
$this->assignVars($id);
} else {
$member_handler =& xoops_gethandler('member');
$user =& $member_handler->getUser($id);
foreach ($user->vars as $k => $v) {
$this->assignVar($k, $v['value']);
}
}
}
}
Comme vous pouvez le voir chaque attribut de la table est initialisé via la méthode initvar en spécifiant différents attributs... à savoir... le nom de la variable $key
$this->vars[$key] = array(
'value' => sa valeur,
'required' => si elle require un formatage html en sortie,
'data_type' => le type de données,
'maxlength' => longueur max si besoin est,
'changed' => si la variable à étée modifiée,
'options' => option d'utilisation
);
Voili voilou... je sais pas si j'ais été clair... muarf... sinon n'hésitez pas à poser des questions... .. .
@ tchaOo°
JeanPoldeux
Messages postés64Date d'inscriptionmardi 14 janvier 2003StatutMembreDernière intervention 5 août 2005 5 août 2005 à 00:12
Pas mal mais très cpp.
L'idée de MALALAM de donner un exemple d'utilisation ne serait pas de trop.
Perso, même au niveau config, je ne vois pas trop l'intérêt de passer par une classe pour savoir si une var a été initialisée ou pour changer sa valeur.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 25 juil. 2005 à 17:08
cs_Zart
Messages postés285Date d'inscriptionjeudi 29 juillet 2004StatutMembreDernière intervention27 juin 20061 25 juil. 2005 à 16:28
Je savais même pas qu'il y avait de l'héritage en PHP (grâce à la v5 surement).
Sinon est-ce que ça existe les interfaces ce serait pas mal util ou bien peut on faire du multi héritage ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 25 juil. 2005 à 10:57
hello,
je serais toi, je rajouterais un exemple concret d'utilisation de ta classe. Concret, mais exemple neanmoins hein, un truc bidon.
Parce que la je pense que c'est vraiment trop...abstrait :-)
Sinon, bien, c'est la premiere fois que je vois sur CS un code utilisant une classe abstraite :-)
25 déc. 2005 à 18:23
par ex la class XoopsUser qui hérite des propriétés de la class XoopsObject et qui est faite pour la table users de xoops... voici sont constructeur...
function XoopsUser($id = null)
{
$this->initVar('uid', XOBJ_DTYPE_INT, null, false);
$this->initVar('name', XOBJ_DTYPE_TXTBOX, null, false, 60);
$this->initVar('uname', XOBJ_DTYPE_TXTBOX, null, true, 25);
$this->initVar('email', XOBJ_DTYPE_TXTBOX, null, true, 60);
$this->initVar('url', XOBJ_DTYPE_TXTBOX, null, false, 100);
$this->initVar('user_avatar', XOBJ_DTYPE_TXTBOX, null, false, 30);
$this->initVar('user_regdate', XOBJ_DTYPE_INT, null, false);
$this->initVar('user_icq', XOBJ_DTYPE_TXTBOX, null, false, 15);
$this->initVar('user_from', XOBJ_DTYPE_TXTBOX, null, false, 100);
$this->initVar('user_sig', XOBJ_DTYPE_TXTAREA, null, false, null);
$this->initVar('user_viewemail', XOBJ_DTYPE_INT, 0, false);
$this->initVar('actkey', XOBJ_DTYPE_OTHER, null, false);
$this->initVar('user_aim', XOBJ_DTYPE_TXTBOX, null, false, 18);
$this->initVar('user_yim', XOBJ_DTYPE_TXTBOX, null, false, 25);
$this->initVar('user_msnm', XOBJ_DTYPE_TXTBOX, null, false, 100);
$this->initVar('pass', XOBJ_DTYPE_TXTBOX, null, false, 32);
$this->initVar('posts', XOBJ_DTYPE_INT, null, false);
$this->initVar('attachsig', XOBJ_DTYPE_INT, 0, false);
$this->initVar('rank', XOBJ_DTYPE_INT, 0, false);
$this->initVar('level', XOBJ_DTYPE_INT, 0, false);
$this->initVar('theme', XOBJ_DTYPE_OTHER, null, false);
$this->initVar('timezone_offset', XOBJ_DTYPE_OTHER, null, false);
$this->initVar('last_login', XOBJ_DTYPE_INT, 0, false);
$this->initVar('umode', XOBJ_DTYPE_OTHER, null, false);
$this->initVar('uorder', XOBJ_DTYPE_INT, 1, false);
// RMV-NOTIFY
$this->initVar('notify_method', XOBJ_DTYPE_OTHER, 1, false);
$this->initVar('notify_mode', XOBJ_DTYPE_OTHER, 0, false);
$this->initVar('user_occ', XOBJ_DTYPE_TXTBOX, null, false, 100);
$this->initVar('bio', XOBJ_DTYPE_TXTAREA, null, false, null);
$this->initVar('user_intrest', XOBJ_DTYPE_TXTBOX, null, false, 150);
$this->initVar('user_mailok', XOBJ_DTYPE_INT, 1, false);
// for backward compatibility
if (isset($id)) {
if (is_array($id)) {
$this->assignVars($id);
} else {
$member_handler =& xoops_gethandler('member');
$user =& $member_handler->getUser($id);
foreach ($user->vars as $k => $v) {
$this->assignVar($k, $v['value']);
}
}
}
}
Comme vous pouvez le voir chaque attribut de la table est initialisé via la méthode initvar en spécifiant différents attributs... à savoir... le nom de la variable $key
$this->vars[$key] = array(
'value' => sa valeur,
'required' => si elle require un formatage html en sortie,
'data_type' => le type de données,
'maxlength' => longueur max si besoin est,
'changed' => si la variable à étée modifiée,
'options' => option d'utilisation
);
Voili voilou... je sais pas si j'ais été clair... muarf... sinon n'hésitez pas à poser des questions... .. .
@ tchaOo°
5 août 2005 à 00:12
L'idée de MALALAM de donner un exemple d'utilisation ne serait pas de trop.
Perso, même au niveau config, je ne vois pas trop l'intérêt de passer par une classe pour savoir si une var a été initialisée ou pour changer sa valeur.
25 juil. 2005 à 17:08
25 juil. 2005 à 16:28
Sinon est-ce que ça existe les interfaces ce serait pas mal util ou bien peut on faire du multi héritage ?
25 juil. 2005 à 10:57
je serais toi, je rajouterais un exemple concret d'utilisation de ta classe. Concret, mais exemple neanmoins hein, un truc bidon.
Parce que la je pense que c'est vraiment trop...abstrait :-)
Sinon, bien, c'est la premiere fois que je vois sur CS un code utilisant une classe abstraite :-)