<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.constants.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'language.constants.syntax.php',
    1 => 'Syntaxe',
    2 => 'Syntaxe',
  ),
  'up' => 
  array (
    0 => 'language.constants.php',
    1 => 'Les constantes',
  ),
  'prev' => 
  array (
    0 => 'language.constants.php',
    1 => 'Les constantes',
  ),
  'next' => 
  array (
    0 => 'language.constants.predefined.php',
    1 => 'Constantes pr&eacute;d&eacute;finies',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'language/constants.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.constants.syntax" class="sect1">
  <h2 class="title">Syntaxe</h2>
  <p class="simpara">
   Les constantes peuvent être définies en utilisant le mot clé
   <code class="literal">const</code> ou en utilisant la fonction
   <span class="function"><a href="function.define.php" class="function">define()</a></span>.
   Tandis que <span class="function"><a href="function.define.php" class="function">define()</a></span> permet de définir une
   constante pour une expression arbitraire, le mot-clé
   <code class="literal">const</code> a des restrictions comme indiqué
   dans le paragraphe suivant.
   Une fois qu&#039;une constante est définie,
   elle ne peut jamais être modifiée, ou détruite.
  </p>
  <p class="simpara">
   Lors de l&#039;utilisation du mot-clé <code class="literal">const</code>,
   seuls les expressions de type scalaires (<span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>,
   <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>, <span class="type"><a href="language.types.float.php" class="type float">float</a></span> et <span class="type"><a href="language.types.string.php" class="type string">string</a></span>) et
   des <span class="type"><a href="language.types.array.php" class="type array">array</a></span>s constants contenant seulement des expressions
   scalaires sont acceptées.
   Il est possible de définir des constantes en tant que
   <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>, mais cet usage est déconseillé,
   car il peut mener à des résultats inattendus.
  </p>
  <p class="simpara">
   La valeur d&#039;une constante est accédée simplement en spécifiant son nom.
   Contrairement aux variables, une constante n&#039;est <em>pas</em>
   préfixée d&#039;un <code class="literal">$</code>.
   Il est aussi possible d&#039;utiliser la fonction <span class="function"><a href="function.constant.php" class="function">constant()</a></span>
   pour lire la valeur d&#039;une constante si son nom est obtenu dynamiquement.
   La fonction <span class="function"><a href="function.get-defined-constants.php" class="function">get_defined_constants()</a></span> permet de connaître
   la liste de toutes les constantes définies.
  </p>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Les constantes et les variables globales utilisent deux espaces de
    noms différents. Ce qui implique que <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> et
    <var class="varname">$TRUE</var> sont généralement différents (en tout cas, ils
    peuvent avoir des valeurs différentes).
   </span>
  </p></blockquote>

  <p class="simpara">
   Si une constante indéfinie est utilisée, une <span class="classname"><a href="class.error.php" class="classname">Error</a></span> est
   levée.
   Avant PHP 8.0.0, les constantes indéfinies étaient interprétées comme un
   mot nu de type <a href="language.types.string.php" class="link">chaîne de caractères</a>, c.-à-d. (CONSTANT vs &quot;CONSTANT&quot;).
   Cette solution de repli est dépréciée à partir de PHP 7.2.0, et une erreur de
   niveau <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> était émise lorsque ce cas se produisait.
   Avant PHP 7.2.0, une erreur de niveau
   <a href="ref.errorfunc.php" class="link">E_NOTICE</a> était émise à la place.
   Voir également l&#039;entrée du manuel qui explique pourquoi
   <a href="language.types.array.php#language.types.array.foo-bar" class="link">$foo[bar]</a> est faux
   (sauf si <code class="literal">bar</code> est une constante).
   Ceci ne s&#039;applique pas pour les <a href="language.namespaces.rules.php" class="link">constantes (complètement) qualifiées</a>,
   qui lèvent toujours une <span class="classname"><a href="class.error.php" class="classname">Error</a></span> si elles ne sont pas définies.
  </p>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <span class="simpara">
    Pour vérifier qu&#039;une constante est définie, utiliser la fonction <span class="function"><a href="function.defined.php" class="function">defined()</a></span>.
   </span>
  </p></blockquote>

  <p class="para">
   Il y a des différences entre les constantes et les variables :
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Les constantes ne commencent pas par le signe (<code class="literal">$</code>).
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Les constantes sont définies et accessibles à tout endroit du code,
      globalement.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Les constantes ne peuvent pas être redéfinies ou indéfinies
      une fois qu&#039;elles ont été définies.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Les constantes peuvent seulement évaluer à des valeurs scalaires ou tableaux.
     </span>
    </li>
   </ul>
  </p>

  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Exemple #1 Définir une constante</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />  define</span><span style="color: #007700">(</span><span style="color: #DD0000">"CONSTANT"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Bonjour le monde."</span><span style="color: #007700">);<br />  echo </span><span style="color: #0000BB">CONSTANT</span><span style="color: #007700">; </span><span style="color: #FF8000">// affiche "Bonjour le monde."<br />  </span><span style="color: #007700">echo </span><span style="color: #0000BB">Constant</span><span style="color: #007700">; </span><span style="color: #FF8000">// Lève une Error : Undefined constant "Constant"<br />                 // Avant PHP 8.0.0, affiche "Constant" et émet un avertissement.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>

  <p class="para">
   <div class="example" id="example-3">
    <p><strong>Exemple #2 Définir des constantes en utilisant le mot-clé <code class="literal">const</code></strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Simple valeur scalaire<br /></span><span style="color: #007700">const </span><span style="color: #0000BB">CONSTANT </span><span style="color: #007700">= </span><span style="color: #DD0000">'Bonjour le monde !'</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">CONSTANT</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Expression scalaire<br /></span><span style="color: #007700">const </span><span style="color: #0000BB">ANOTHER_CONST </span><span style="color: #007700">= </span><span style="color: #0000BB">CONSTANT</span><span style="color: #007700">.</span><span style="color: #DD0000">'; Au revoir le monde !'</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">ANOTHER_CONST</span><span style="color: #007700">;<br /><br />const </span><span style="color: #0000BB">ANIMALS </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'chien'</span><span style="color: #007700">, </span><span style="color: #DD0000">'chat'</span><span style="color: #007700">, </span><span style="color: #DD0000">'oiseaux'</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">ANIMALS</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]; </span><span style="color: #FF8000">// affiche "chat"<br /><br />// Tableaux constants<br /></span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">'ANIMALS'</span><span style="color: #007700">, array(<br />    </span><span style="color: #DD0000">'chien'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'chat'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'oiseaux'<br /></span><span style="color: #007700">));<br />echo </span><span style="color: #0000BB">ANIMALS</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]; </span><span style="color: #FF8000">// affiche "chat"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Contrairement aux constantes définies en utilisant l&#039;instruction
    <span class="function"><a href="function.define.php" class="function">define()</a></span>, les constantes définies en utilisant
    le mot-clé <code class="literal">const</code> doivent être déclarées
    au plus haut niveau du contexte, car elles seront définies au moment
    de la compilation. Cela signifie qu&#039;elles ne peuvent être déclarées
    à l&#039;intérieur de fonctions, boucles, instructions
    <code class="literal">if</code> ou
    blocs <code class="literal">try</code>/<code class="literal">catch</code>.
   </p>
  </p></blockquote>

  <div class="sect2">
   <h3 class="title">Voir aussi</h3>
   <p class="para">
    <ul class="simplelist">
     <li><a href="language.oop5.constants.php" class="link">Les Constantes de Classe</a></li>
    </ul>
   </p>
  </div>
 </div><?php manual_footer($setup); ?>