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> |