Partage
  • Partager sur Facebook
  • Partager sur Twitter

quel est l'intérêt des propriétés statiques ?

Sujet résolu
Anonyme
    6 avril 2020 à 5:04:14

    Bonjour je m'intérèsse à la POO en PHP et je n'ai pas bien compris l'intérêt des propriétés statiques o_O

    j'ai compris que cela appartenait à la classe et non à l'objet mais ça change quoi conrètement ?

    Merci d'avance de votre aide :)

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      6 avril 2020 à 9:08:02

      monkey3d a écrit:

      Bonjour,

      Un peu de recherche pour un peu de lecture : https://www.pierre-giraud.com/php-mysql-apprendre-coder-cours/oriente-objet-propriete-methode-statique/

      https://www.php.net/manual/fr/language.oop5.static.php

      https://www.grafikart.fr/tutoriels/static-559

      ... et tu as ta réponse.

      A+

      C'est peu-être parce que j'ai pas compris les liens sur lesquels je suis tombé que je suis venu posté ma question ici tu pense pas ?

      • Partager sur Facebook
      • Partager sur Twitter
        6 avril 2020 à 9:37:13

        Admettons ...

        .. mais comme je réponds sur pas mal de sujet, je constate que beaucoup préfère poster que de chercher avant.

        Alors qu'est-ce que tu n'as pas compris ? car il me semble que le premier lien est assez détaillé et sauf à paraphraser je ne vois pas trop quoi ajouter.

        Je cite dans le document :

        Prenons immédiatement un premier exemple afin que vous compreniez bien l’intérêt et le fonctionnement des propriétés et méthodes statiques.



        A+

        -
        Edité par monkey3d 6 avril 2020 à 9:41:05

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          6 avril 2020 à 11:46:43

          Je n'ai pas compris l'intérêt des propriétés statiques face aux propriétés normales (comme le tire l'indique)

          je n'ai pas compris qu'est que cela change que la propriété appartienne à la classe ou non

          • Partager sur Facebook
          • Partager sur Twitter
            6 avril 2020 à 12:02:51

            Je ne sais pas en dire plus que ce qui est écrit dans les liens que je t'ai proposé.

            Je t'ai même indiqué le passage où il parle de l'intérêt.

            Peut-être quelqu'un d'autres saura te refaire un cours.

            Bye

            • Partager sur Facebook
            • Partager sur Twitter
              6 avril 2020 à 12:15:35

              Salut,

              l'intérêt d'un attribut statique c'est qu'il est commun à TOUS les objets généré à partir de la classe.

              Dans l'exemple du premier lien, tu vois que 2 admins bannissent 3 user (2 pour le premier, 1 pour le second) mais les 2 ont accès aux 3 bannis

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                7 avril 2020 à 3:40:17

                christouphe a écrit:

                Salut,

                l'intérêt d'un attribut statique c'est qu'il est commun à TOUS les objets généré à partir de la classe.

                Dans l'exemple du premier lien, tu vois que 2 admins bannissent 3 user (2 pour le premier, 1 pour le second) mais les 2 ont accès aux 3 bannis


                Mais une propriété normale est aussi commune a tous les objets ?

                si j'ai une propriété public x , tous les objets pourront y accéder avec un ->

                la différece réside dans le fait que on n'a pas besoin de passer par une méthode pour modifier la valeur ??

                • Partager sur Facebook
                • Partager sur Twitter
                  7 avril 2020 à 7:58:54

                  Herox Codeur a écrit:

                  christouphe a écrit:

                  Salut,

                  l'intérêt d'un attribut statique c'est qu'il est commun à TOUS les objets généré à partir de la classe.

                  Dans l'exemple du premier lien, tu vois que 2 admins bannissent 3 user (2 pour le premier, 1 pour le second) mais les 2 ont accès aux 3 bannis


                  1) Mais une propriété normale est aussi commune a tous les objets ?

                  si j'ai une propriété public x , tous les objets pourront y accéder avec un ->

                  2) la différece réside dans le fait que on n'a pas besoin de passer par une méthode pour modifier la valeur ??


                  1) Une propriété x non static est accessible par tous les objets mais ne partage pas les même valeurs car cela dépend de l'objet sur lequel tu es

                  La différence avec une propriété y static c'est que, quelque soit l'objet ou tu es, ça valeur est la même pour tous le monde.

                  2) Du coup non :)

                  Voici un exemple pour être plus parlant :

                  <?php
                  
                  class Voiture
                  {
                      // Je mets en public pour ne pas devoir faire tous les getters et setters
                      // mais bien sur il faut normalement les mettres en private ou protected si besoin
                      public static $nombreTotal = 0;
                  
                      public $nom;
                      public $couleur;
                  
                      public function __construct($nom, $couleur)
                      {
                          $this->nom = $nom;
                          $this->couleur = $couleur;
                          self::$nombreTotal += 1;
                          // self correspond à Voiture vu que l'on est dans la classe Voiture
                          // c'est donc équivalant à Voiture::$nombreTotal += 1;
                      }
                  }
                  
                  echo "Nombre de voiture : ".(Voiture::$nombreTotal)."\n";
                  $voiture1 = new Voiture('Peugeot', 'rouge');
                  var_dump($voiture1);
                  
                  $voiture2 = new Voiture('Peugeot', 'rouge');
                  var_dump($voiture2);
                  
                  echo "Nombre de voiture : ".(Voiture::$nombreTotal)."\n";
                  
                  echo "Nombre de voiture : ".($voiture1::$nombreTotal)."\n";
                  echo "Nombre de voiture : ".($voiture2::$nombreTotal)."\n";

                  $nombreTotal n'est pas lié à un objet en particulier, il est lié à une classe en particulier. C'est là qu'est toute la différence.

                  Les 3 derniers echo retourne la même chose à savoir : "Nombre de voiture : 2"

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    7 avril 2020 à 12:15:33

                    quenti77 a écrit:

                    Herox Codeur a écrit:

                    christouphe a écrit:

                    Salut,

                    l'intérêt d'un attribut statique c'est qu'il est commun à TOUS les objets généré à partir de la classe.

                    Dans l'exemple du premier lien, tu vois que 2 admins bannissent 3 user (2 pour le premier, 1 pour le second) mais les 2 ont accès aux 3 bannis


                    1) Mais une propriété normale est aussi commune a tous les objets ?

                    si j'ai une propriété public x , tous les objets pourront y accéder avec un ->

                    2) la différece réside dans le fait que on n'a pas besoin de passer par une méthode pour modifier la valeur ??


                    1) Une propriété x non static est accessible par tous les objets mais ne partage pas les même valeurs car cela dépend de l'objet sur lequel tu es

                    La différence avec une propriété y static c'est que, quelque soit l'objet ou tu es, ça valeur est la même pour tous le monde.

                    2) Du coup non :)

                    Voici un exemple pour être plus parlant :

                    <?php
                    
                    class Voiture
                    {
                        // Je mets en public pour ne pas devoir faire tous les getters et setters
                        // mais bien sur il faut normalement les mettres en private ou protected si besoin
                        public static $nombreTotal = 0;
                    
                        public $nom;
                        public $couleur;
                    
                        public function __construct($nom, $couleur)
                        {
                            $this->nom = $nom;
                            $this->couleur = $couleur;
                            self::$nombreTotal += 1;
                            // self correspond à Voiture vu que l'on est dans la classe Voiture
                            // c'est donc équivalant à Voiture::$nombreTotal += 1;
                        }
                    }
                    
                    echo "Nombre de voiture : ".(Voiture::$nombreTotal)."\n";
                    $voiture1 = new Voiture('Peugeot', 'rouge');
                    var_dump($voiture1);
                    
                    $voiture2 = new Voiture('Peugeot', 'rouge');
                    var_dump($voiture2);
                    
                    echo "Nombre de voiture : ".(Voiture::$nombreTotal)."\n";
                    
                    echo "Nombre de voiture : ".($voiture1::$nombreTotal)."\n";
                    echo "Nombre de voiture : ".($voiture2::$nombreTotal)."\n";

                    $nombreTotal n'est pas lié à un objet en particulier, il est lié à une classe en particulier. C'est là qu'est toute la différence.

                    Les 3 derniers echo retourne la même chose à savoir : "Nombre de voiture : 2"


                    Ah je vois , merci d'avoir pris le temps de m'expliquer j'ai enfin compris :)

                    • Partager sur Facebook
                    • Partager sur Twitter

                    quel est l'intérêt des propriétés statiques ?

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown