ATTRIBUT STATIQUE PUBLIC
Attribut public static -> Élément qui appartient à la class et non aux objets. Il est tout de même possible de l'afficher et de le manipuler avec self et les doubles deux point self::$nomAttribut (attention à bien noter le $) .
Exemple d'une class ProduitPublicStatic :
class ProduitPublicStatic{
private $prix;
public static $remise = 20;
public function __construct($prix){
$this->setPrix($prix);
}
//On peut modifier la valeur d'un attribut static
public function setRemise($remise){
//$this fait référence à l'objet, self à la class en cours
self ::$remise = $remise;
}
public function setPrix($prix){
$this->prix = $prix;
}
public function getPrix(){
return $this->prix;
}
//On peut manipuller un attribut static et faire un retour
public function getNewtPrix(){
return $this->prix * (1 - self::$remise / 100);
}
}
Nouvelle Instance
$produit1 = new ProduitPublicStatic(50);
Affichage de l'attibut public static en passant par la class
echo ProduitPublicStatic::$remise; Le résultat est bien : 20
Affichage de l'attibut public static en passant par l'objet
echo produit1::$remise; Le résultat est bien : 20
Affichage du résultat de la méthode getNewPrix
echo produit1->getNewPrix(); Le résultat est bien : 40
Modification de la valeur de l'attibut public static
echo $produit1->setRemise (10 );
echo produit1::$remise; La remise est bien maintenant de: 10
echo produit1->getNewPrix(); Le prix après remise est maintenant de: 45
ATTRIBUT STATIQUE PRIVÉ ET METHODE STATIQUE
Attribut privé static -> Élément qui appartient à la class et non aux objets. Accessible uniquement dans la class ou par des méthodes ou méthodes static.
Méthode static -> Si un attribut est en private static, Il est possible de créer une méthode en public static qui retournera le résultat de l'attribut grâce à self::$nomAttribut (!bien noter le $) . Pour y accéder il faudra également mettre les doubles deux points(et non la flèche) avant d'appeler la méthode. $this fait référence à l'objet, self à la class en cours.
Exemple d'une class ProduitPriveStatic :
class ProduitPriveStatic{
private $prix;
private static $remisePourcent = 10;
public function __construct($prix){
$this->setPrix($prix);
}
//Possibilité de modifier l'attribut
public function setRemisePourcent($remisePourcent){
self ::$remisePourcent = $remisePourcent;
}
public function setPrix($prix){
$this->prix = $prix;
}
public function getPrix(){
return $this->prix;
}
//Méthode qui sert à afficher le montant de la remise
public static function getRemisePourcent(){
return self::$remisePourcent;
}
//On peut manipuller un attribut static et faire un retour
public function getNewtPrix(){
return $this->prix * (1 - self::remisePourcent / 100);
}
}
Nouvelle instance
$prod1 = new ProduitPriveStatic(50);
Affichage de l'attribut remisePourcent en passant par la class grâce à la méthode getRemisePourcent qui est en public static
echo ProduitPriveStatic::getRemisePourcent(); Le résultat est bien : 10
Affichage de l'attribut remisePourcent en passant par l'objet grâce à la méthode getRemisePourcent qui est en public static
echo prod1::getRemisePourcent(); Le résultat est bien : 10
Affichage du résultat de la méthode getNewPrix
echo prod1->getNewPrix(); Le résultat est bien : 45
Modification de la valeur de l'attibut public static
echo $prod1->setRemisePourcent (5);
echo prod1::$remisePourcent; La remise est bien maintenant de: 5
echo prod1->getNewPrix(); Le prix après remise est maintenant de: 47.5
CONSTANTE
Constante -> La valeur d'un attribut déclaré avec const ne pourra pas être modifiée. Par convention, son nom est noté en majuscule.
Exemple d'une class NoteUtilisateur :
class NoteUtilisateur{
private $nom;
private $note;
const NOTEHAUTE = 15;
const NOTEBASSE = 10;
public function __construct($nom, $note){
$this->setNom($nom);
$this->setNote($note);
}
public function setNom($nom){
$this->nom = $nom;
}
public function setNote($note){
$this->note = $note;
}
public function getNom(){
return $this->nom;
}
public function getNote(){
return $this->note;
}
public function degresImplication(){
if($this->getNote() >= self::NOTEHAUTE){
echo 'La note de '.$this->nom.' est excellente !';
}
else if($this->getNote() >= self::NOTEBASSE){
echo 'La note de '.$this->nom.' est moyenne.';
}
else{
echo 'La note de '.$this->nom.' est basse.';
}
}
}
Instances
$prod1 = new NoteUtilisateur('Pierre', 15);
$prod1 = new NoteUtilisateur('Paul', 12);
$prod1 = new NoteUtilisateur('Jacques', 9);
Affichage de la méthode degresImplication
echo user1->degresImplication();
La note de Pierre est excellente !
echo user2->degresImplication();
La note de Paul est moyenne.
echo user3->degresImplication();
La note de Jacques est basse.