Bonjour/Bonsoir je voudrai savoir comment s'appel cette method 'class::function' ou 'class::$variable' car ca m'aide beacoup et je voudrai savoir l'utiliser en mode avancée ? merci

5 réponses


BenFarhat
Réponse acceptée

Les attributs statics sont des attributs qui sont reliés à la classe et non à l'objet.
Mise à part le fait que tu n'as pas besoin de créer d'instance, tu as juste à te dire que c'est un attribut (ou une variable) qui peut être partager entre les objets d'une même classe
par exemple

<?php
class Homme
{
  private static $_population = 0;

  public function __construct()
  {
    self::$_population++; 
    /* quand on veut acceder a quelquechose en rapport avec l'objet on utilise la fleche ->
    quand on veut accéder à un élement en rapport avec la classe on met les double deux points ::
    si tu veut acceder à un élement de l'objet tu utilise $this si c'est élement de la classe tu met self
    la remarque a faire c'est que pour les attributs statics il y a toujours le dollar ($) avant le nom de l'attribut
    par contre pour les attributs de l'objet (que l'attribut soir private ou public) on enlève le $ qui se place avant le this
    */
  }

  public static function getPopulation()
  {
    return self::$_population;
  }
}

$francaise= new Homme; // ici la population est de 1
$italien= new Homme; // population devient 2
$espagnole= new Homme; 
$allemand= new Homme; 
$belges= new Homme;

echo Homme::getPopulation(); // affiche 5
?>

Bref un truc assez con mais si tu veux créer une méthode qui ne change rien à l'objet et qui est en rapport avec la classe ben tu l'as déclare static

donc pour ta question

class::$variable <--- ca c'est un attribut static de la classe "class" qui est partagé entre tout les objets de la classe et comme on l'as vu qui peut être modifier par un objet (en précisant que cette attribut n'as pas de rapport direct avec l'objet X ou Y)
Dans mon exemple c'est vrai que population semble avoir un rapport avec le nombre d'instance, mais tu peut par exemple imaginer un attribut static qui compte le nombre d'objet a avoir appeler la fonction boire ou dormir.

$this->variable <--- ca c'est un attribut appelé dans la classe, un attribut en rapport avec l'objet par exemple

<?php
class Homme
{
  private static $_population = 0;
  public $age;

  public function __construct($age)
  {
    $this->age=$age; 
  }

  public function getAge()
  {
    return $this->age;
  }
}

$francaise= new Homme(24); 
$italien= new Homme(30); 
$espagnole= new Homme(28); 
$allemand= new Homme(36); 
$belges= new Homme(32);

echo $espagnole->age; // affiche 26
?>

Je sais pas une méthode static ?

Oui, mais ça chance de quoi avec static $variable , ca ma fait galere pendant tout la journee , et quel est la differance de $this->variable ?

Class:function c'est quand tu veux appeler une fonction qui est dites statique dans une classe Router::url veut donc dire que la fonction url est statique dans la classe Router. Une variable statique n'a pas besoin d'être instancer, de plus le $this est une pseudo variable c'est surtout un marqueur qui te permet de dire cette variable et pas une autre, c'est une convention plus qu'autre chose.

Une classe est une représentation d'objet. Comme l'expression "tout le monde peut écrire, mais tout le monde n'est pas droitier".

class Eleve {
    private $type_de_main = "gaucher";
    static public $nbEleveAEcrit = 0; // Initialisation de départ
    public function quelTypeDemainEstCetteEleve() {
        return $this->type_de_main;
    }
    static public function toutLeMondePeutEcrireMaisCestLaParticulariteDunEleve($ecrire) {
        echo $ecrire;
        $nbEleveAEcrit++;
    }

}