8791 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

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 à vous deux d'avoir eu la patience de chercher avec moi une solution^^ Smiley smile et bon week end Smiley smile
J'étais en train de te dire que getin::getIn(); ne pouvait pas fonctionner. Normalement tu aurais du avoir un message te disant qu'un constructeur ne peux pas être statique.

Une autre solution aurait été d'instancier ton objet : new getIn();
Comment ça pour le reste Nours312? tout dépendait uniquement de ça il semblerait^^

C'est bizarre ton explication Heyoan, si getIn(fonction) était appellé de façon statique, getin(classe) ne contenait pas de constructeurs. Seul form en a un pour le moment, et je l'ai appellé en instanciant un objet

D'ailleurs à ce sujet, jusqu'à maintenant j'utilisais les classes sans penser suffisament objet, c'est pourquoi j'ai pris l'habitude de faire en statique, mais maintenant que j'commence à coder vraiment POO, j'suis obligé de penser en instanciations^^
Smoke a écrit :
C'est bizarre ton explication Heyoan, si getIn(fonction) était appellé de façon statique, getin(classe) ne contenait pas de constructeurs.
Ben si puisque avant PHP5 et son fameux __construct le constructeur était la méthode portant le même nom que la classe (insensible à la casse).
d'accord mais j'suis passé en php5, c'est normal que ça conserve ce comportement pré php5?
Ben oui...

il suffit de faire
<?php
class test {
   function __construct() {
      echo 'ok!';
   }
}

new test;
?>
puis
<?php
class test {
   function test() {
      echo 'ok!';
   }
}

new test;
?>
pour le vérifier.


Edit: et d'ailleurs heureusement sinon il faudrait réécrire toutes les classes qui fonctionnaient en PHP4.
Modifié par Heyoan (09 May 2009 - 19:27)
ah oui, j'me souviens avoir lu cette histoire de rétro-compatibilité quelque part^^ tout juste^^
Pages :