Easy-Micro

LANGAGE POO PHP Part 1
Résolution static

La programmation orientée objet en PHP

Résolution statique à la volée

La résolution statique à la volée permet de savoir quelle classe a été initialement appelée afin d'invoquer des méthodes ou accéder à des attributs de la classe appelée.

self:: sert à appeler un attribut, une méthode statique ou une constante de la classe dans laquelle est contenu self::

<?php
class Mere {
  public static function lancerLeTest() {
    self::quiEstCe();
  }
  
  public static function quiEstCe() {
    echo 'Je suis la classe Mère !';
  }
}


class Enfant extends Mere {
  public static function quiEstCe() {
    echo 'Je suis la classe Enfant !';
  }
}

Enfant::lancerLeTest();
À l'écran s'affichera "Je suis la classe Mère"

Pourquoi c'est la méthode quiEstCe de la classe parente qui a été appelée ? Pourquoi pas celle de la classe fille puisqu'elle a été récrite ?

Tout simplement parce que self:: fait appel à la méthode statique de la classe dans laquelle est contenu self::, donc de la classe parente

Tout tourne autour de l'utilisation de static::. static:: a exactement le même effet que self::, à l'exception près que static::appelle l'élément de la classe qui est appelée pendant l'exécution. C'est-à-dire que si j'appelle la méthode lancerLeTest depuis la classe Enfant et que dans cette méthode j'utilise static:: au lieu de self::, c'est la méthode quiEstCe de la classe Enfant qui sera appelée et non de la classe Mere !

<?php
class Mere {
  public static function lancerLeTest() {
    static::quiEstCe();
  }
  
  public function quiEstCe() {
    echo 'Je suis la classe Mere !';
  }
}

class Enfant extends Mere {
  public static function quiEstCe() {
    echo 'Je suis la classe Enfant !';
  }
}

Enfant::lancerLeTest();
Ce qui donnera "Je suis la classe Enfant"

Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]