Appel de methode objet

Salut a tous, je me met sérieusement a la prog objet en php, et j’ai remarqué qu’on peut appeler des methodes de deux facons :

$objet->methode();

et

$objet::methode();

quelle est la différence ? merci d’avance.

$objet::methode();

C’est lorsque tu appelles une fonction statique.


class A {
     static function test() { 
         echo 'blabla' ;
     }
}

A::test() //affiche blabla

Lorsque ta fonction est statique tu n’est pas obliger d’instancier ton objet pour utiliser la fonction.

La première méthode est la méthode classique d’appel de fonction

Il me semble que la syntaxe $objet::methode() n’existe pas, que c’est plutôt classe::methode().
Et cette façon d’invoquer une méthode est pour les méthodes statiques.

Voilà.

C’est le contexte statique.

class A {
  public function a() {}
  public static function b();
}

$a = new A();
$a->a(); // valide
$a->b(); // valide même si b est statique (à tester)
A::b(); // valide 
$a::b(); // évalue $a comme chaîne, et appel la méthode b sur la classe représentée par la chaîne; ou erreur.

Sauf en PHP 4 tout moche où on peut utiliser $objet::methode() ou $objet->methode() et où il n’y a aucune différence. :yeux3: