oujood.com

Opérateur de résolution de portée (::)

Il est possible de définir des valeurs constantes à l'intérieur d'une classe.Pour accéder aux constantes, on utilise l'opérateur de résolution de portée

chercher |

PHP cours tutorial

Opérateur de résolution de portée (::)


Vous avez peut être remarqué que dans les chapitres précédents en parlant des membres d’une classe, à savoir les attributs les méthodes mais on a aussi les constantes dont on a rien dit jusqu’ici !

Et bien c’est ce que nous allons voir tout de suite.

Constantes de classe

Il est possible de définir des valeurs constantes à l'intérieur d'une classe, qui ne seront pas modifiables d’ où leurs nom.

Les constantes diffèrent des variables normales du fait qu'on n'utilise pas le symbole $ pour les déclarer ou les utiliser.

La valeur doit être une expression constante, pas  une variable, une propriété, le résultat d'une opération mathématique ou un appel de fonction.

Pour déclarer une constante, vous devez faire précéder son nom du mot-clé const comme suit :

Exemple :       Copier le code

  <?php
  class MaClass
  {
    const MACONSTANTE = valeur constante;
    function mafonction() {
   }?>

L'opérateur de résolution de portée ::

Contrairement aux attributs, vous ne pouvez accéder à la valeur d’une constante par l'opérateur -> depuis un objet (ni avec $this), car une constante appartient à la classe et non à un objet.

Pour accéder aux constantes, on utilise l'opérateur de résolution de portée :: .

L'opérateur de résolution de portée (aussi appelé Paamayim Nekudotayim) ou, en termes plus simples, le symbole "double deux-points" (::), fournit un moyen d'accéder aux membres constants ou statiques.

Ne vous préoccupez du membre statique nous allons le voir dans le chapitre suivant.

Exemple 1 : Accéder au membre constant  en dehors de la définition de la classe

Exemple :       Copier le code

  <?php
  class MaClass {
      const CONST_VALUE = 'Une valeur constante';
  }
  echo MaClass::CONST_VALUE;
  ?>

Exemple 2 : Accéder au membre constant  depuis la définition de la classe

Pour accéder au membre constant depuis la défintion de la classe (c'est-à-dire de l'intérieur de la classe) on utlise le mot clé self avec l'operateur de résolution de portée ::

Exemple :       Copier le code

  <?php
  class MaClass {
      const CONST_VALUE = 'Une valeur constante';
          const AUTRE_CONSTANTE = 50;
          public  function fonction() {
          echo self::CONST_VALUE ."<br />" ;
          echo self::AUTRE_CONSTANTE ;
      }
  }
  //Lors de la création d'un objet
      $objet = new MaClass ();
      $objet->fonction();
   
  ?>

Exemple 3 : Utilisez des constantes pour déterminer des limites supérieures et inférieures.

Si vous avez un code avec une entrée utilisateur ou vous voulez que la valeur saisie ne dépasse pas une limite, vous pouvez utiliser des constantes pour fixer des limites supérieures et inférieures. Comme dans l’exemple suivant :

Exemple :       Copier le code

  <?php
   
  class Dimension
  {
    const MIN = 0, MAX = 800;
   
    public $largeur, $hauteur;
   
    public function __construct($w = 0, $h = 0){
      $this->largeur  = self::clamp($w);
      $this->hauteur = self::clamp($h);
    }
   
    public function __toString(){
      return "Dimension [largeur=$this->largeur, hauteur=$this->hauteur]";
    }
   
    protected static function clamp($value){
      if($value < self::MIN) $value = self::MIN;
      if($value > self::MAX) $value = self::MAX;
      return $value;
    }
  }
   
  echo (new Dimension()) . '<br>';
  echo (new Dimension(1500, 97)) . '<br>';
  echo (new Dimension(14, -20)) . '<br>';
  echo (new Dimension(240, 80)) . '<br>';
   
  ?>

Par carabde 20 Aout 2014



Voir aussi nos tutoriel :

la propriété box-shadow

Attache un ou plusieurs ombres portées à la boîte

fonction strcasecmp

Comparaison insensible la casse de chaînes binaires

Balise texte pré formaté pre

Définit le texte pré formaté