IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

méthode static par défaut!


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 0
    Points
    0
    Par défaut méthode static par défaut!
    Bonjour à tous,

    Il semblerait que PHP (5.x) considère les méthodes de classes comme static par défaut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php 
    class test {
    	public function nonStatic($appel) {
    		echo("Je ne dois pas etre static $appel\n");
    	}
    }
     
    // appel static d'une fonction non static : devrait planter
    test::nonStatic(1);
     
    // appel non static d'une fonction non déclarée static
    $toto = new test();
    $toto->nonStatic(2);
    ?>

    résultat:
    Je ne dois pas etre static 1
    Je ne dois pas etre static 2

    Le premier appel ne devrait pas marcher car la méthode n'est pas static, pourtant ça marche!
    Existe-t-il un moyen de déclarer une méthode explicitement non static?

    merci de votre aide,
    François

  2. #2
    Membre confirmé
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 453
    Points
    453
    Par défaut
    quand j'exécute ce code sur ma bécane j'obtiens ce message d'erreur :

    Strict Standards: Non-static method test::nonStatic() should not be called statically.

    Mais les deux appels sont bien effectués.

    C'est le coté laxiste de PHP...
    Keep it simple, stupid !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    j'ai aussi fait passé mon error_reporting à
    error_reporting = E_ALL | E_STRICT

    pour avoir aussi le message d'erreur...

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Points : 275
    Points
    275
    Par défaut
    ouai j'ai jamais testé ce genre de truc
    part contre dès que tu va utiliser $this là php va bien te faire remarquer si tu es en static ce qui est normal

Discussions similaires

  1. Méthode d'allocation par défaut des variables locales
    Par Pragmateek dans le forum Fortran
    Réponses: 8
    Dernier message: 04/02/2009, 22h03
  2. Valeur par défaut des paramètres d’une méthode
    Par three minute hero dans le forum BOUML
    Réponses: 6
    Dernier message: 29/06/2008, 23h04
  3. Réponses: 4
    Dernier message: 15/06/2008, 18h31
  4. Appel du navigateur par défaut et méthode POST
    Par Pascal Fonteneau dans le forum Web & réseau
    Réponses: 2
    Dernier message: 23/01/2008, 07h56
  5. [Débutant(e)]valeur par défaut dans méthodes
    Par seiryujay dans le forum Langage
    Réponses: 3
    Dernier message: 13/07/2005, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo