|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() |
Bonjour
Je n'arrive pas à utiliser une class depuis une fonction, est ce normal. Au debut de mon script, j'ai ceci Code :
j'ai le message d'erreur suivant: Fatal error: Cannot instantiate non-existent class: erozia_user in f:\truc.net\demo\news\news_bibliotheque\scripts\erozia_liste_sender_ticket.php on line 8 Est normal, comment faire pour ma class contenu dans le fichier erozia_class_user.php soit disponible depuis mes fonctions. Merci d'avance |
||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Oui c'est normal, la fonction ne connait que ses propres variables, c'est pareil pour la classe, mais tu peux la passer en paramètres, avec le & devant si tu veux la passer par référence et que les modif sur la classe faites dans la fonction soit retournés
__________________
Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() |
Y a t'il alors une astuce pour globaliser mon objet et le rendre accessible depuis toute les fonctions du script?
du style |
|
|
00
|
|
|
#4 | ||
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Lis la doc concernant la porté des variable, je pense que c'est la même chose pour les class
apparemment on peux faire ca avec des variable, je sais pas si ca marche pour les class, a tester Code :
__________________
Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème |
||
|
|
00
|
|
|
#5 | ||
|
Membre éprouvé
![]() Développeur Web Inscription : avril 2005 Messages : 395 ![]() |
il n'y a pas de problème avec les objects comme avec les variables
exemple : Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 97 ![]() |
Je n'ai pas réussi à retrouver la référence, mais les classes sont accessibles depuis n'importe quel endroit du code, elle n'ont pas de contexte. Le problème doit donc venir d'ailleurs. Il faudrait que tu nous mette un extrait de la déclaration de ta classe dans le fichier 'erozia_class_user.php'.
J'ai d'abord pensé que c'était la création de l'objet qui était mauvaise, dans le manuel ils spécifient de le faire avec les parenthèses : $userobj=new erozia_user(); Apparemment les deux fonctionnent mais ça vaudrait quand même la peine d'essayer avec. |
|
|
00
|
|
|
#7 | ||
|
Invité régulier
![]() |
Voila un extrait de ma class
Code :
maintenant si je place require_once a l'interieur de la fonction, ca marche, mais ca je ne veux pas, je ne vois pas l'interet de faire de l'objet si c'est pour importer les meme bouts de code a chaque appel de la fonction. |
||
|
|
00
|
|
|
#8 | |
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Citation:
Je vais tester ca dès ce soir, si tu as raison, je vais pouvoir simplifier, tu as vu ca dans la doc ?
__________________
Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème |
|
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : juillet 2005 Messages : 52 ![]() |
Attention de différencier une classe et un objet.
Une classe est assimilée à un type. Un objet est une instance d'une classe... |
|
|
00
|
|
|
#10 |
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Arf, oui t'as raison, je confondais, donc mon code est bon.
Donc son problème viens d'ailleur, rien a voir avec global ou pas.
__________________
Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème |
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() |
Effectivement, je confirme ce que dit eric93 en reecrivant un script tout simple j'arrive a instancier un objet depuis une fonction sans lui passer de parametre, donc une class est accessible depuis n'importe ou.
Ce qui est etrange c'est que ca ne fonctione pas depuis mes autres scripts qui ont la meme structure que mon script test |
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : juillet 2005 Messages : 52 ![]() |
ton require_once, est-il dans une condition (un if par exemple) ?
Le require comme l'include remplace la ligne d'inclusion par le contenu du fichier inclus avant l'interprétation par php. Vérifie bien ça, c'est ce qui me semble le plus probable. |
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() |
j'ai verifié ça aussi, je viens de le placer au debut du script, le pb est identique.
j'ai le message suivant Fatal error: Cannot instantiate non-existent class: erozia_user |
|
|
00
|
|
|
#14 | |||
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Moi qui utilise que de simple #include, j'ai été voir la doc pour les include() et require(), et je vois ca pour include() :
Citation:
Citation:
Ils disent aussi Citation:
__________________
Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème |
|||
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Inscription : juillet 2005 Messages : 52 ![]() |
Aux grands maux les grand remèdes... donne-nous ton code complet (enfin jusqu'à ta fonction au moins) y compris le fichier inclus...
|
|
|
00
|
|
|
#16 |
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
stfm as tu vu mon message précédent ? je crois que son require ne trouve tout simplement pas sa class
__________________
Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème |
|
|
00
|
|
|
#17 |
|
Membre du Club
![]() Inscription : juillet 2005 Messages : 52 ![]() |
Alors que d'abord qu'on a posté en même temps, donc non je n'avais pas vu
Et ensuite tu édites ton message pendant que je fais autre chose, c'est gonflé Je ne pense pas que ce soit ça, il dirait qu'il ne peut pas inclure le fichier et non qu'il ne peut pas instancier la classe. Qui plus est, winBernado a testé avec un autre fichier plus simple sans soucis, donc....... la vérité est ailleurs |
|
|
00
|
|
|
#18 | ||||||
|
Invité régulier
![]() |
alors,
ca c'est le client universel, la page qui est est appelé dans le navigateur Code :
Code :
ce fichier est inclus dans la fonction affichage_box a la ligne 40 Code :
|
||||||
|
|
00
|
|
|
#19 | |
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Citation:
__________________
Si un problème ne trouve pas de solution, c'est qu'il n'y à pas de problème |
|
|
|
00
|
|
|
#20 |
|
Invité régulier
![]() |
oui, je viens de le faire, même resultat
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com