POO problème __construct
Résolu/Fermé
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
-
9 mai 2009 à 14:50
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 - 9 mai 2009 à 19:35
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 - 9 mai 2009 à 19:35
A voir également:
- POO problème __construct
- Happy poo - Télécharger - Arcade
- Trouver la radio sur freebox poo - Forum Freebox
- Warning: mysqli::__construct(): (hy000/1045): access denied for user 'root'@'localhost' (using password: no) - Astuces et Solutions
13 réponses
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
9 mai 2009 à 15:54
9 mai 2009 à 15:54
Sans déc ?
Tu trouves plus simple de faire
que
????
Nan .... t'abuses là !
Mise à part qu'il manque toujours
$fCorps = '';
au début dans getIn ça renvoie ce que c'est censé renvoyé : de là à dire que ca fonctionne lol
Tu trouves plus simple de faire
function __construct($inst,$titre,$corps,$error){ list($id,$class,$action,$type)=explode('°',$inst);
que
function __construct($id,$class,$action,$type,$titre,$corps,$error){
????
Nan .... t'abuses là !
Mise à part qu'il manque toujours
$fCorps = '';
au début dans getIn ça renvoie ce que c'est censé renvoyé : de là à dire que ca fonctionne lol
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
9 mai 2009 à 15:41
9 mai 2009 à 15:41
Bjr
Non la syntaxe __construct est juste (vérifie qd même que le module PHP est bien en version 5 ou sup chez toin provider lol) par contre ta façon de passer des paramètres est bizarre ... ;-)
Pourquoi ne pas faire comme ceci ?
Sinon tu fais appel à $this->tilte et $this->corps sans les déclarer au préalable
Et puis il manque $fCorps = ''; au début dans getIn
Non la syntaxe __construct est juste (vérifie qd même que le module PHP est bien en version 5 ou sup chez toin provider lol) par contre ta façon de passer des paramètres est bizarre ... ;-)
Pourquoi ne pas faire comme ceci ?
function __construct($id, $class, $action, $type,$error){
Sinon tu fais appel à $this->tilte et $this->corps sans les déclarer au préalable
Et puis il manque $fCorps = ''; au début dans getIn
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
9 mai 2009 à 15:48
9 mai 2009 à 15:48
Bonjour PhP :)
Merci pour ta réponse, je désespérais^^ (la majorité de mes topics passent inaperçus -_-')
Voici mes version de php sur celeonet: Version de PHP : 4.4.8 / 5.2.5 ça devrait être bon^^ et puis j'ai toujours utilisé la POO, mais pas de façon 'académique' lol
sinon, je ne fais pas comme tu m'as montré parce que ça m'embrouille un peu :p j'ai cherché à simplifier, en tous cas pour mon esprit ;)
Bien vu pour titre et corps, j'les avais zappé :s *pas sérieux ça*
Voici mes modifs:
et
ça ne fonctionne toujours pas:s
Merci pour ta réponse, je désespérais^^ (la majorité de mes topics passent inaperçus -_-')
Voici mes version de php sur celeonet: Version de PHP : 4.4.8 / 5.2.5 ça devrait être bon^^ et puis j'ai toujours utilisé la POO, mais pas de façon 'académique' lol
sinon, je ne fais pas comme tu m'as montré parce que ça m'embrouille un peu :p j'ai cherché à simplifier, en tous cas pour mon esprit ;)
Bien vu pour titre et corps, j'les avais zappé :s *pas sérieux ça*
Voici mes modifs:
function getIn($error){ $fId='access'; $fClass=''; $fAction="index.php?part=exh&root=access&branch=getIn"; $fType='none'; if(!$error) $error=''; $fTitre='Connexion'; $fCorps.="\n<label>Artiste <input type='text' maxlength=20 name='artName'/></label>"; $fCorps.="\n<label>Code <input type='password' name='psw'/></label>"; $inst=$fId.'°'.$fClass.'°'.$fAction.'°'.$fType; $form=new form($inst,$fTitre,$fCorps,$error); $form->display(); }
et
class form { public $id; public $classe; public $action; public $type; public $error; public $titre; public $corps; function __construct($inst,$titre,$corps,$error){ list($id,$class,$action,$type)=explode('°',$inst); $this->id=$id; $this->classe=$class; $this->action=$action; $this->type=$type; $this->error=$error; $this->titre=$titre; $this->corps=$corps; } function display(){ $fCorps="\n\t<div id='".$this->id."' class='".$this->classe."'>"; $fCorps.="\n\t<form method='post' action='".$this->action."'"; if($this->type=='upload') $fCorps.=" enctype='multipart/form-data'"; $fCorps.=">"; $fCorps.="\n\t\t<h3 class='titre'>".$this->titre."</h3>"; $fCorps.="\n\t\t<h5 class='error'>".$this->error."</h5>"; $fCorps.="\n\t\t<p>".$this->corps."</p>"; if($this->type!='list') $fCorps.="\n\t<input type='image' name='Envoyer' title='Envoi de formulaire' src='send.png'/>"; $fCorps.="\n\t</form>"; $fCorps.="\n\t</div>"; echo $fCorps; } }
ça ne fonctionne toujours pas:s
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
9 mai 2009 à 15:52
9 mai 2009 à 15:52
salut,
pour t'aider à débuguer, tant que tu es en développement tu ajoutes "error_reporting(E_ALL);" au début du script principal.
variables inutilisés, warnings, tu auras tout !
pour t'aider à débuguer, tant que tu es en développement tu ajoutes "error_reporting(E_ALL);" au début du script principal.
variables inutilisés, warnings, tu auras tout !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
9 mai 2009 à 16:00
9 mai 2009 à 16:00
Salut,
juste comme ça : je suis sous Free et j’ai moi aussi le choix entre deux versions, une 4.x et une 5.x. Seulement, par défaut, c’est la 4 qui est utilisée…
Pour forcer la v5, il faut renommer les scripts en .php5. Renseigne-toi sur le mécanisme utilisé par ton hébergeur, c’est peut-être pas tout à fait pareil.
Bon courage ;)
juste comme ça : je suis sous Free et j’ai moi aussi le choix entre deux versions, une 4.x et une 5.x. Seulement, par défaut, c’est la 4 qui est utilisée…
Pour forcer la v5, il faut renommer les scripts en .php5. Renseigne-toi sur le mécanisme utilisé par ton hébergeur, c’est peut-être pas tout à fait pareil.
Bon courage ;)
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
9 mai 2009 à 16:05
9 mai 2009 à 16:05
Merci Groarh, je vérifierais ça :D (pas cool quand même cette histoire :s)
PhP, pour le moment (car c'est probablement une appréciation temporaire), je trouve que la lisibilité de mon script est meilleure ainsi, mais les habitudes changent. Ceci dit, j'ai procédé comme tu démontres auparavant, ça m'aidait pas beaucoup; alors je cherche de nouvelles méthodes^^
Pour le $fCorps= manquant j'ai corrigé, et même si c'est peu orthodoxe (une erreur que j'ai laissée passer), j'ai eu l'occasion de tester la fonction getIn avec une autre fonction de formulaire, que j'essais d'améliorer avec cette classe, ça fonctionnait bien^^ :D
Dalida, merci pour le conseil, t'es toujours d'une grande aide^^ je vais voir ce qu'il me sort^^ et je vous tiens au courant
PhP, pour le moment (car c'est probablement une appréciation temporaire), je trouve que la lisibilité de mon script est meilleure ainsi, mais les habitudes changent. Ceci dit, j'ai procédé comme tu démontres auparavant, ça m'aidait pas beaucoup; alors je cherche de nouvelles méthodes^^
Pour le $fCorps= manquant j'ai corrigé, et même si c'est peu orthodoxe (une erreur que j'ai laissée passer), j'ai eu l'occasion de tester la fonction getIn avec une autre fonction de formulaire, que j'essais d'améliorer avec cette classe, ça fonctionnait bien^^ :D
Dalida, merci pour le conseil, t'es toujours d'une grande aide^^ je vais voir ce qu'il me sort^^ et je vous tiens au courant
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
9 mai 2009 à 16:21
9 mai 2009 à 16:21
Comme quoi chacun se façon programmer ;-)
Moi ce qui m'intrigue dans ton approche (indépendamment du passage de tes paramètres) c'est l'existence même de ta fonction getIn() comme si tu essayais d'encapsuler les objets dans des fonctions globales ... bref revenir à une forme de programmation procédurale au lieu d'utiliser réellement les objets.
Mais si tu t'y retrouves comme ça c'est l'essentiel
Moi ce qui m'intrigue dans ton approche (indépendamment du passage de tes paramètres) c'est l'existence même de ta fonction getIn() comme si tu essayais d'encapsuler les objets dans des fonctions globales ... bref revenir à une forme de programmation procédurale au lieu d'utiliser réellement les objets.
Mais si tu t'y retrouves comme ça c'est l'essentiel
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
9 mai 2009 à 16:14
9 mai 2009 à 16:14
Bon, ba ça m'renvoi rien :s j'l'ai mit tout en haut de mon index, tout en haut de mon fichier contenant getin, et tout en haut de celui contenant la classe form, ça ne fonctionne pas:s j'ai essayé error_reporting(-1); et ça ne fonctionne pas non plus:s
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
9 mai 2009 à 16:28
9 mai 2009 à 16:28
j'ignore comment tu testes mais en faisant comme ceci
Ca m'affiche :
... <body> <textarea cols="50" rows="40"> <?php getIn('erreur');?> </textarea> </body> </html>
Ca m'affiche :
<div id='access' class=''> <form method='post' action='index.php?part=exh&root=access&branch=getIn'> <h3 class='titre'>Connexion</h3> <h5 class='error'>erreur</h5> <p> <label>Artiste <input type='text' maxlength=20 name='artName'/></label> <label>Code <input type='password' name='psw'/></label></p> <input type='image' name='Envoyer' title='Envoi de formulaire' src='send.png'/> </form> </div>
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
921
9 mai 2009 à 19:07
9 mai 2009 à 19:07
j'ai essayé error_reporting(-1); et ça ne fonctionne pas non plus
évidement, tu le sors d'où ton -1 ?
le lien vers le manuel PHP, c'était pas juste pour faire joli...
évidement, tu le sors d'où ton -1 ?
le lien vers le manuel PHP, c'était pas juste pour faire joli...
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
>
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
9 mai 2009 à 19:35
9 mai 2009 à 19:35
j't'aurais pas fait cet affront :D
Astuce
En passant la valeur -1, toutes les erreurs possibles seront affichées, même lors de l'ajout d'autres niveaux et constantes dans les futures versions de PHP. La constantes E_ALL fonctionne de la même façon depuis PHP 6.
voilà d'où je le sors ;) de la doc elle même^^
Astuce
En passant la valeur -1, toutes les erreurs possibles seront affichées, même lors de l'ajout d'autres niveaux et constantes dans les futures versions de PHP. La constantes E_ALL fonctionne de la même façon depuis PHP 6.
voilà d'où je le sors ;) de la doc elle même^^
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
9 mai 2009 à 16:38
9 mai 2009 à 16:38
tu t'interroges sur l'argument? Il est utilisé lors du traitement des données, si les données sont incomplètes on fait appel à une fonction qui va vérifier l'envoi de chaque input et renvoyer les erreurs adéquates^^ j'ai pas mis cette fonction ici puisqu'elle n'apparait pas encore dans l'exécution du script, elle ne génère donc pas d'erreurs (et elle a très bien fonctionné jusqu'à maintenant, bien qu'incomplète)
Bon en fait j'ai vérifié avec phpversion(), et c'est la version 4.4.8 qui est ressortie. Ce qui expliquerait une partie de mon problème, j'ai donc modifié mon interface pour la énième fois (pas pratique celeonet là dessus) et maintenant j'suis bien en 5.2.5, mais ça ne fonctionne pas pour autant.
:s
Bon en fait j'ai vérifié avec phpversion(), et c'est la version 4.4.8 qui est ressortie. Ce qui expliquerait une partie de mon problème, j'ai donc modifié mon interface pour la énième fois (pas pratique celeonet là dessus) et maintenant j'suis bien en 5.2.5, mais ça ne fonctionne pas pour autant.
:s
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
9 mai 2009 à 16:40
9 mai 2009 à 16:40
le echo error_reporting(E_ALL); me renvoi 6143 maintenant :s j'ignore encore à quoi ça correspond :(
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
9 mai 2009 à 16:52
9 mai 2009 à 16:52
j'ai trouvé -_-' *boulet*
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
9 mai 2009 à 16:54
9 mai 2009 à 16:54
lorsque tu exécutes la fonction error_reporting() PHP te renvoie l'ancien niveau d'erreur
6143 correspond simplement à la constante E_ALL
donc avant l'appel à la fonction tu étais déjà au niveau E_ALL pour le rapport d'erreurs.
Et sans appeler du tout ta fonction getIn est ce que ta page s'affiche ?
6143 correspond simplement à la constante E_ALL
donc avant l'appel à la fonction tu étais déjà au niveau E_ALL pour le rapport d'erreurs.
Et sans appeler du tout ta fonction getIn est ce que ta page s'affiche ?
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
9 mai 2009 à 17:01
9 mai 2009 à 17:01
Merci pour le complètement d'informations : ) bien utile tout ça^^
sans appeller cette fonction ma page s'affiche très bien^^
sans appeller cette fonction ma page s'affiche très bien^^
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
9 mai 2009 à 18:05
9 mai 2009 à 18:05
okay j'ai trouvé (petit suspens...)
j'ai changé le nom de la fonction, et ça a marché. Pourquoi?
[nouveau petit suspens]
Parce que la classe s'appellait getin et la fonction getIn, donc ma théorie, c'est que ces noms sont insensibles à la casse.
Ce qui est une explication assez bizarre, parce que ça ne m'avait pas fait le coup avant. Avec mon autre méthode, qui ne faisait pas de class form en POO à proprement parler, ça fonctionnait sans problème, getin et getIn n'étaient pas considérés comme équivalents. Je ne m'explique pas cet étrange changement :s, en tous cas ça a l'air de marcher maintenant, merci à tous d'avoir eu la patience de chercher avec moi une solution^^ :) et bon week end :)
j'ai changé le nom de la fonction, et ça a marché. Pourquoi?
[nouveau petit suspens]
Parce que la classe s'appellait getin et la fonction getIn, donc ma théorie, c'est que ces noms sont insensibles à la casse.
Ce qui est une explication assez bizarre, parce que ça ne m'avait pas fait le coup avant. Avec mon autre méthode, qui ne faisait pas de class form en POO à proprement parler, ça fonctionnait sans problème, getin et getIn n'étaient pas considérés comme équivalents. Je ne m'explique pas cet étrange changement :s, en tous cas ça a l'air de marcher maintenant, merci à tous d'avoir eu la patience de chercher avec moi une solution^^ :) et bon week end :)