Invité
Invité n'ayant pas de compte PHPfrance
04 sept. 2005, 16:56
comment faire dialoguer c'est deux classes pour savoir si un utilisateur a les droits ou non sur un page?
t'as dû voir qu'il existe plusieurs manières de permettre à deux objets de dialoguer.
en voila trois.
$toto=new obj_un();
$tutu=new obj_deux();
//tu passes en paramètre un objet
//cela correspond à une aggrégation
//les deux objets gardent une certaine indépendance, tu pourras te resservir de $tutu pour d'autres choses dans ton script
$toto->une_methode($tutu);
//tu crés un objet à l'intérieur d'une méthode d'un autre objet
//cela correspond à une composition
//pour schématiser l'objet $tutu n'existe que si l'objet $toto existe, et les deux objets meurent en même temps
//une méthode de l'objet $toto
function une_methode()
{
$tutu=new obj_deux();
}
//tu estimes que ta classe ne mérite pas d'être instancier et tu utilise la propriétée static(ce qui peut être aussi appelé classe utilitaire)
//une méthode de l'objet $toto
function une_methode()
{
class_static::une_méthode_de_class_static();
}
pour revenir à ton problème, ta classe user fabriquera un objet métier, c'est à dire un objet qui contient des données présentes dans ta base de donnée, et qui représente par le biais de ces attributs une table de ta base(enfin je schématise mais c'est souvent comme ça).
ta classe mysql par contre est une classe qui t'apporte des fonctionnalités, qui servira ici à tes objets métiers à établir le dialogue vers la base.
donc ta classe user pourrait avoir une méthode qui s'occupe de vérifier les droits grace à un objet de ta classe mysql qui te permettra d'interroger la base.
après ça dépend de ton appli, à mon sens il y a plusieurs façon d'implémenter ce que tu veux.
si tu renseignes tes attributs à un moment donné, tu n'aurais plus qu'à vérifier 'level' pour savoir ce que tu veux, comme tu pourrais ne pas te servir de ta class user pour ça, comme d'autres choses encore...
mais en gros ta classe user se servira de ta classe mysql(qui à mon sens porte un mauvais nom vu que l'intérêt de créer une classe pour les accès bases est de pouvoir changer de type de base en changeant le minimum de code possible, l'ideal étant de toucher seulement à la classe s'occupant de tels accès) pour interroger la base.
serait t'il idioit de faire une mere des ces 2 classes avec comme attribut le login et le mdp?
un petit peu quand même
l'héritage sert à spécialiser une classe, donc la classe fille doit appartenir à la même famille que la classe mère.
ce qui n'est pas le cas ici(ta class user ne sert pas à accéder aux bases de donnée, et ta classe mysql n'est pas une sorte d'user).
en espérant avoir répondu à ta question sans avoir dit trop de bétises.