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>