Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/01/2008, 11h44   #1
Invité régulier
 
Inscription : février 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 25
Points : 9
Points : 9
Par défaut [POO] Classe dans une classe

Bonjour,

j'utilise deux classes auth et user qui sont dans deux fichiers différents.
Seuelement je dois utiliser des opérations de la classe user dans la classe auth.

Aucun de ces 2 fichiers ne sera appelé directement (création d'un site web)
Par exemple il y aura un fichier index avec instanciation des 2 classes au début.
Code :
1
2
3
 
$auth=new auth();
$user=new user()
Si dans la classe auth je fais appelle à une opération de la classe user de cette façon, est-ce correcte ?
Code :
1
2
3
4
5
6
 
class auth() {
......
$user->login();
 
}
j'ai essayé de mettre un global $user dans la classe auth mais eclipse me dit que la syntaxe n'est pas correct.

Qu'en pensez-vous ?
coachllb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 13h19   #2
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
J'en pense qu'il te faudra probablement faire des include_once (n'oublie pas le _once, c'est pour s'assurer que la classe n'est inclue qu'une fois) pour avoir acces au code d'une classe depuis une autre.

De même, passer user en parametre plutot que d'utiliser un global est plus propre.
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 16h23   #3
Invité régulier
 
Inscription : février 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 25
Points : 9
Points : 9
oui au départ j'ai utilisé des include_once.
et j'ai instancier la classe user dans la classe auth avec un $user=new user() en debut de fichier.
mais si ensuite j'instancie la classe auth dans un fichier index.php et que je réinstancie une nouvelle fois user dans ce fichier, n'est ce pas redondant. Je sais que c'est tout à fait possible de faire plusieurs instantiations d'une même classe. Mais je trouve juste cela redondant. Est-ce la bonne méthode ou pas ?
PS : je débute en POO.

Cependant il me reste une question : voici mon code du fichier auth.php
Code :
1
2
3
4
5
6
 
include_once('user.php')
 
class auth {
définitions des propriétés et opérations
}
dois-je instancier la classe user avant la declaration de la classe auth ou dans la classe ?


Merci
coachllb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 16h50   #4
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Est-ce que tu ne peux pas tout simplement instancier une premiere fois ta classe user dans le index.php, puis passer la variable à ta classe auth, évitant ainsi la réinstanciation ?
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 17h02   #5
Invité régulier
 
Inscription : février 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 25
Points : 9
Points : 9
c'est ce que j'avais fait au tout début (mais dans ce cas avec eclipse pdt je n'ai pas acces aux méthodes de la classe user dans la classe auth par autocomplétion)
par contre si j'instancie user dans index.php, dans la classe auth dois-je mettre var $user ?
coachllb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 17h19   #6
Nouveau Membre du Club
 
Avatar de eexit
 
Étudiant
Inscription : juillet 2007
Messages : 61
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 61
Points : 35
Points : 35
Bonsoir,

Le nom de l'objet que tu associe à l'instanciation d'une class peut être celui que tu voudras.

Si tu as peur de créer trop d'instances de ta class, avant de l'instancier, tu peux vérifier si ta variable $user est un objet et si elle est une instance de la class user.

-> is_object()
-> instanceof

Bonne soirée
eexit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 17h29   #7
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Salut,
perso je dirais que ca dépend de ton modèle. Par exemple :
- est-ce que t'as besoin de user dans plusieurs méthodes dans auth ?
- est-ce que user est indispensable pour le fonctionnement de auth ?
- Que fait auth ? car login() semble être une méthode d'authenfication, donc est-ce que ce serait pas plutôt, login() qui devrait faire appel à auth (et/ou peut-être retourner une instance de user)?

Sans plus d'infos la méthode de Rakken me semble la meilleure. (à savoir ne pas stocker de user dans auth mais le passer à la méthode)
Bye
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 17h31   #8
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Citation:
avec eclipse pdt je n'ai pas acces aux méthodes de la classe user dans la classe auth par autocomplétion
Eclipse pdt gere mal l'autocompletion tout seul, alors il faut l'aider un peu.
Pour cela, il faut que tu mettes des commentaire style "javadoc".
Code :
1
2
3
4
5
6
7
8
9
10
 
  /**
   * Blabla qui explique la fonction 
   * @param string $str : une string
   * @param nomDeMaClassePerso $mcp
   */
  public function uneFonction($str, $mcp) {
    $mcp->...    // Et la, magie, on a l'autocompletion !
    ...
  }
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 19h48   #9
Invité régulier
 
Inscription : février 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 25
Points : 9
Points : 9
Merci pour vos réponses.
Si je m'appuie sur cela :
Citation:
Sans plus d'infos la méthode de Rakken me semble la meilleure. (à savoir ne pas stocker de user dans auth mais le passer à la méthode)
comment passer l'instanciation de user dans auth ? je déclare var $user dans la class auth ?
coachllb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 22h49   #10
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Ben une classe instanciée, ca n'est ni plus ni moins qu'une bête variable.

Code :
1
2
3
4
$user = new user();
$auth = new auth($user);
// ou encore
$auth->ma_fonction($user);
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2008, 08h34   #11
Invité régulier
 
Inscription : février 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 25
Points : 9
Points : 9
Ok merci Rakken
je venais juste de gribouiller cela au brouillon. Ca ma rassure car j'ai la même chose que toi.

Merci bcp
coachllb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2008, 13h18   #12
Invité de passage
 
Inscription : janvier 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 3
Points : 1
Points : 1
Moi j'utilise un __autoload ... Ca te permet de ne plus te soucier des problèmes d'include...
douby est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h09.


 
 
 
 
Partenaires

Hébergement Web