.. 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.
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"
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
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.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL