Mot clé static

slurp Messages postés 5 Date d'inscription dimanche 1 juin 2003 Statut Membre Dernière intervention 19 novembre 2008 - 19 nov. 2008 à 18:49
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 19 nov. 2008 à 21:41
qui pourrais m'expliquer le mot clé static, pasque moi je serais tenter de l'utiliser partout vu que pas besoin d'instancié la class.

S'il vous plait une explication avec un exemple pasque dur à comprendre ce mot là
mici d'avance

3 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 nov. 2008 à 19:59
Hello,

tout dépend de quand tu veux l'utiliser. static peut s'utiliser sur des variables, des propriétés membres, des méthodes.
Une méthode statique empêche l'utilisation de $this dans son implémentation. Forcément, puisque l'on n'a pas d'instance.
Une méthode statique déclarée dans une classe parente ne peut être utilisée facilement (voire pas du tout selon les cas) dans une classe fille, car ce sera la méthode de la classe parente qui sera appelée. Ceci sera corrigé dans php5.3.

Difficile de te répondre de but en blanc, tout dépend de l'utilisation que tu comptes en faire. Les exemples contre sont aussi nombreux que les exemples pour. Et inversement :-)
Et tout dépend sur quoi : une méthode, une propriété?

C'est parfait dans ce cas :
class A {
  protected static $iCompteur = 0;

  public static function increment($iLoop) {
    A::$iCompteur += $iLoop;
  }
 
  public static function getCompteur() {
    return A::$iCompteur;
  }
}

class B {
  public function loop($iLoop) {
    A::increment($iLoop);
  }
}

$obj1 = new B;
$obj1->loop(10);
$obj2 = new B;
$obj2->loop(5);
echo A::getCompteur(); // affiche 15

C'est juste un exemple à la con...hein.
0
slurp Messages postés 5 Date d'inscription dimanche 1 juin 2003 Statut Membre Dernière intervention 19 novembre 2008
19 nov. 2008 à 21:27
Je vois que le mot static garde la variable en mémoire au niveau objet mais alors à quoi sert de faire une function static ?

par exemple dans le cas d'un sigelton pour une db je comprends que ce serve à n'avoir qu'une connexion à la base mais sinon ?????
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 nov. 2008 à 21:41
Ca sert à appeler une méthode dans instancier d'objet.
Le singleton...le fait que la méthode soit statique n'a pas grand rapport avec le fait que l'on n'ait qu'un seul objet (et pas une seule connexion...ça, c'est encore différent); simplement, inutile d'instancier un objet qui ne sert qu'à renvoyer une variable globale. Tu confonds...le singleton est un design pattern. C'est juste une technique de programmation. Une technique qu'il est avantageux d'utiliser en appel statique. Le singleton n'engloble pas la notion de "static" en php. cette dernière peut s'utiliser dans bien d'autres cas.
Relis la doc de php sur php.net pour bien comprendre cette notion.
Dans mon exemple, tu ne vois que la propriété...or, j'ai aussi une classe, A, que je n'instancie jamais, mais qui est pourtant au coeur de mon exemple. Et cette classe possède une méthode. Utilisée elle aussi.

Après, c'est comme tout en programmation : tu connais les possibilités...mais si tu ne vois pas comment les utiliser...ça ne te sert à rien. A toi de comprendre les possibilités, et de les exploiter si le besoin se présente. Ou de ne pas les exploiter, justement, quand il ne se présente pas...c'est ce qui fait un bon codeur.
0
Rejoignez-nous