Les constantes contiennent une valeur fixe et sont caractérisées par un identficateur et un type de données à l'instar des variables.
Les constantes ne peuvent être déclarées que dans les classes, en utilisant le mot-clé const. Les méthodes ne peuvent contenir des déclaration de constantes.
const COULEUR_NOIRE = '#000000'; const CODE = 1537503; const PI = 3.14;
Les constantes ne sont pas précédées par le signe $ spécifique aux variables.
Par convention, le nom des constantes est toujours en majuscules afin de les distinguer sans équivoques des variables.
class Surface { const PI = 3.14; public function calculerAireCercle($rayon) { return self::PI * pow($rayon, 2); } } $rayon = 8; $surface = new Surface(); $res = $surface->calculerAireCercle($rayon); echo 'PI = ' . Surface::PI . ' Rayon = ' . $rayon . ' Surface = ' . $res;
A l'instar des membres statiques, il n'est pas possible d'accéder aux constantes depuis une instance de classe, c'est-à-dire que $this->CONSTANTE n'est pas autorisé.
Exemple [voir]<html> <body> <?php // Un object de gestion des chaines de caractères class Chaine { public $valeur; private $date; public function __construct(){ $this->valeur = func_get_arg(0); $this->date = date(Personne::MASQUE_DATE); } public function set($valeur){ $this->valeur = $valeur; } public function get(){ return $this->valeur; } public function __toString(){ return '[' . $this->valeur . ']'; } } class Personne { const MASQUE_DATE = 'd M Y H:i:s'; static $compteur; private $date_inscription; private $date_modification; private $id; private $civilite; private $nom; private $prenom; private $adresse; private $telephone; public function __construct( $civilite, $nom, $prenom, $adresse, $telephone){ $this->date_inscription = new Chaine(date(self::MASQUE_DATE)); $this->civilite = new Chaine($civilite); $this->nom = new Chaine($nom); $this->prenom = new Chaine($prenom); $this->adresse = new Chaine($adresse); $this->telephone = new Chaine($telephone); $this->date_modification = new Chaine($this->date_inscription->get()); $this->id = $this->idModif(); } public function __toString(){ return '[' . $this->civilite->get() . ', ' . $this->nom->get() . ', ' . $this->prenom->get() . ', ' . $this->adresse->get() . ', ' . $this->telephone->get() . ', ' . $this->date_inscription->get() . ', ' . $this->date_modification->get() . ',' . $this->id->get() . ']'; } public function setNom($nom){ $this->nom->set($nom); $this->dateModif(); $this->idModif(); } public function setPrenom($prenom){ $this->prenom->set($prenom); $this->dateModif(); $this->idModif(); } public function setAdresse($adresse){ $this->adresse->set($adresse); $this->dateModif(); } public function setTelephone($telephone){ $this->telephone->set($telephone); $this->dateModif(); } private function dateModif(){ $this->date_modification->set(date(self::MASQUE_DATE)); } private function idModif(){ $this->id = new Chaine(self::$compteur++ . date('dmy') . '.' . $this->nom->get() . '_' . substr($this->prenom, 0, 1)); } public function __clone(){ $this->date_inscription = new Chaine(date(self::MASQUE_DATE)); $this->civilite = new Chaine($this->civilite->get()); $this->nom = new Chaine($this->nom->get()); $this->prenom = new Chaine($this->prenom->get()); $this->adresse = new Chaine($this->adresse->get()); $this->telephone = new Chaine($this->telephone->get()); $this->date_modification = new Chaine($this->date_inscription->get()); $this->idModif(); } } class Employe extends Personne { public $specialite; public $service; public $date_embauche; public function __construct($civilite, $nom, $prenom, $adresse, $telephone, $specialite, $service){ echo $specialite . ' ' . $service; $this->specialite = new Chaine($specialite); $this->service = new Chaine($service); $this->date_embauche = new Chaine(date(parent::MASQUE_DATE)); parent::__construct($civilite, $nom, $prenom, $adresse, $telephone); } public function __toString(){ return '[' . parent::__toString() .', ' . $this->specialite->get() . ', ' . $this->service->get() . ', ' . $this->date_embauche->get() . ']'; } $employe = new Employe( 'Madame', 'Waldec', 'Anne', '75 rue Belleville 75010 Paris', '0142152432', 'Analyste/programmeur', 'Recherche et développement'); echo $employe; ?> </body> </html> |