conan Posté 21 Août 2005 Partager Posté 21 Août 2005 Bonjour, Je tente de mettre un define ou un const dans ma classe mais j'obtiens une erreur : parse error, expecting 'T_OLD_FUNCTION' or 'T_FUNCTION... je ne vois pas pourquoi on ne pourrais pas utiliser l'un ou l'autre ? merci de votre aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
oxyd-x Posté 21 Août 2005 Partager Posté 21 Août 2005 Salut, pourrais-tu préciser la version de php que tu utilise, et aussi le bout de script qui "coince". Les fonctions "const" et "define" ne peuvent (si je ne dit pas de bétise) être utilisé qu'au tout début de ta classe (aprés sa déclaration) @+ oxyd-x Lien vers le commentaire Partager sur d’autres sites More sharing options...
conan Posté 21 Août 2005 Auteur Partager Posté 21 Août 2005 Voilà : class acces { const ACCES_REFUS = 1; que ce soit ca ou : class acces { define("ACCES_REFUS", 1); PHP Version 4.3.11 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 21 Août 2005 Partager Posté 21 Août 2005 Pour la première, je ne connaissais pas, pour la seconde, il y a de fortes chances qu'il prenne la valeur '1' comme un booléen, ce qui sous entendrait : ACCES_REFUS = TRUE. Essaies de faire plutot : define("ACCES_REFUS", "1"); ca devrait marcher ainsi. Lien vers le commentaire Partager sur d’autres sites More sharing options...
conan Posté 22 Août 2005 Auteur Partager Posté 22 Août 2005 Ca fait pareil, apparement on est obligé de le faire hors classe, ce que je trouve génant car les variables définies ne doivent avoir que la classe comme portée, vu que ces variables me permettent de définir les erreurs engendrés au sein de ma classe. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 22 Août 2005 Partager Posté 22 Août 2005 N'utilises pas des constantes, mais des variables normales, pour ce genre de boulot. Tu peux aussi créer une autre classe, que tu pourras exporter dans un autre objet, ainsi les variables spécifiques à la classe seront... spécifiques à la classe.. Mais sais tu qu'une variable affectée à une classe n'est pas visible de l'extérieur de l'objet ? Si tu définis une variable dans la classe, elle ne pourra interférer avec une autre variable, de même nom, comprise dans le programme, hors classe ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
conan Posté 22 Août 2005 Auteur Partager Posté 22 Août 2005 N'utilises pas des constantes, mais des variables normales, pour ce genre de boulot.Tu peux aussi créer une autre classe, que tu pourras exporter dans un autre objet, ainsi les variables spécifiques à la classe seront... spécifiques à la classe.. Mais sais tu qu'une variable affectée à une classe n'est pas visible de l'extérieur de l'objet ? Si tu définis une variable dans la classe, elle ne pourra interférer avec une autre variable, de même nom, comprise dans le programme, hors classe ? <{POST_SNAPBACK}> Si je souhaite mettre mes variables dans la classe c'est simplement pour les utiliser dans la classe et donc ne pas être visible de l'extérieur, c'est simplement pour les tests dans mes méthodes. si par exemple j'ai "un acces refusé" j'utilise alors sa valeur attribué pour accéder au tableau des mes messages d'erreur et ainsi l'afficher. Voilà pourquoi je ne voulais pas mettre des variables classique. mais si je me retrouve obligé... Lien vers le commentaire Partager sur d’autres sites More sharing options...
conan Posté 23 Août 2005 Auteur Partager Posté 23 Août 2005 Bon ben voilà que je tombe de nouveau sur quelque chose d'étrange avec les classes, apparement on ne peut pas faire ceci : class acces { var $cnx; var $err_AccesRefuse = 1; var $errorMsg[1]='t'; il refuse le tableau fourni, que l'index soit un chiffre ou une variable j'obtiens : Parse error, expecting ',' or ';' .... sur la ligne du tableau, si je commente la ligne alors pas d'erreur. Lien vers le commentaire Partager sur d’autres sites More sharing options...
TheRec Posté 23 Août 2005 Partager Posté 23 Août 2005 (modifié) "L'auto-déclaration" de tableaux ne fonctionnent pas dans les class, en tout cas pas sous PHP4 (je n'ai jamais testé cela sous PHP5...un petit tour dans le manuel s'impose peut-être)... Déclare ta variable ainsi : var $errorMsg=array(1 => 't'); Pour le premier problème, apparemment PHP4 ne permet pas de déclaration de constantes de classe... alors que PHP5 selon le manuel lui as cette possibilité : http://php.benscom.com/manual/fr/language.oop5.constants.php Je vais faire quelques recherches et je te redirais... mais garde bien en tête que c'es seulement depuis PHP5 que on considère PHP comme un language réellement orienté objet... PHP4 incluait une bonne partie du modèle objet mais c'était assez incomplet... **EDIT** C'est bien ce que je pensais... Trouvé dans le manuel PHP, dans les commentaires des utilisateurs : ---[Editor's Note]---As of PHP 5.0.0 this is possible. You can define class-only constants, which can be called like Foo::Constant1 from the outside ---[End Note]--- Please keep in mind that class AClass { define ("Const1", "Value1"); ... } didn't work. You have to make all your constant definitions before you open the class. So define ("Const1", "Value1"); class AClass { ... } would be correct. Cela signifie pour les "non-shakespeariens", que PHP4 ne permet pas les déclaration de constantes de classe, mais c'est possible depuis PHP 5.0.0 ...pour toutefois utiliser des constantes avec une classe il suffit de les déclarer AVANT la classe en question, elle seront toutesfois accessible sans instancier la classe... mais ça peut être un mal nécessaire...on peu aussi tout simplement passer par une variable, mais c'est du bricolage pour un projet de grande envergure... Modifié 23 Août 2005 par TheRec Lien vers le commentaire Partager sur d’autres sites More sharing options...
conan Posté 23 Août 2005 Auteur Partager Posté 23 Août 2005 "L'auto-déclaration" de tableaux ne fonctionnent pas dans les class, en tout cas pas sous PHP4 (je n'ai jamais testé cela sous PHP5...un petit tour dans le manuel s'impose peut-être)... Déclare ta variable ainsi : var $errorMsg=array(1 => 't'); Pour le premier problème, apparemment PHP4 ne permet pas de déclaration de constantes de classe... alors que PHP5 selon le manuel lui as cette possibilité : http://php.benscom.com/manual/fr/language.oop5.constants.php Je vais faire quelques recherches et je te redirais... mais garde bien en tête que c'es seulement depuis PHP5 que on considère PHP comme un language réellement orienté objet... PHP4 incluait une bonne partie du modèle objet mais c'était assez incomplet... **EDIT** C'est bien ce que je pensais... Trouvé dans le manuel PHP, dans les commentaires des utilisateurs : Cela signifie pour les "non-shakespeariens", que PHP4 ne permet pas les déclaration de constantes de classe, mais c'est possible depuis PHP 5.0.0 ...pour toutefois utiliser des vaitables avec une classe il suffit de les déclarer AVANT la classe en question, elle seront toutesfois accessible sans instancier la classe... mais ça peut être un mal nécessaire...on peu aussi tout simplement passer par une variable, mais c'est du bricolage pour un projet de grande envergure... <{POST_SNAPBACK}> Merci pour tes réponses. Lien vers le commentaire Partager sur d’autres sites More sharing options...
TheRec Posté 23 Août 2005 Partager Posté 23 Août 2005 De rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant