<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.control-structures.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'control-structures.declare.php',
    1 => 'declare',
    2 => 'declare',
  ),
  'up' => 
  array (
    0 => 'language.control-structures.php',
    1 => 'Les structures de contr&ocirc;le',
  ),
  'prev' => 
  array (
    0 => 'control-structures.match.php',
    1 => 'match',
  ),
  'next' => 
  array (
    0 => 'function.return.php',
    1 => 'return',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'language/control-structures/declare.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="control-structures.declare" class="sect1">
 <h2 class="title">declare</h2>
 <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p>
 <p class="para">
  L&#039;élément de langage <code class="literal">declare</code> sert à ajouter des
  directives d&#039;exécution dans un bloc de code. La syntaxe de
  <code class="literal">declare</code> est similaire à la syntaxe des autres
  fonctions de contrôle :
  <div class="informalexample">
   <div class="example-contents">
<div class="cdata"><pre>
declare (directive)
    commandes
</pre></div>
   </div>

  </div>
 </p>
 <p class="para">
  L&#039;expression <code class="literal">directive</code> permet de contrôler l&#039;intervention
  du bloc <code class="literal">declare</code>.
  Actuellement, seulement trois directives sont reconnues :
  <ul class="simplelist">
   <li><a href="control-structures.declare.php#control-structures.declare.ticks" class="link"><code class="literal">ticks</code></a></li>
   <li><a href="control-structures.declare.php#control-structures.declare.encoding" class="link"><code class="literal">encoding</code></a></li>
   <li><a href="language.types.declarations.php#language.types.declarations.strict" class="link"><code class="literal">strict_types</code></a></li>
  </ul>
 </p>

 <p class="para">
  Comme les directives sont gérées lors de la compilation du fichier, seulement 
  les littéraux peuvent être utilisés comme valeur de ces directives. Les variables 
  et constantes ne peuvent pas être utilisées. Pour illustrer :
  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Ceci est correct:<br /></span><span style="color: #007700">declare(</span><span style="color: #0000BB">ticks</span><span style="color: #007700">=</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Ceci est incorrect:<br /></span><span style="color: #007700">const </span><span style="color: #0000BB">TICK_VALUE </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />declare(</span><span style="color: #0000BB">ticks</span><span style="color: #007700">=</span><span style="color: #0000BB">TICK_VALUE</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  L&#039;expression <code class="literal">commandes</code> du bloc de
  <code class="literal">declare</code> sera exécutée. Comment elle sera exécutée,
  et quels effets cela aura, dépend de la directive utilisée dans le bloc
  <code class="literal">directive</code>.
 </p>
 <p class="para">
  La structure <code class="literal">declare</code> peut aussi être utilisée
  dans le contexte global. Elle affecte alors tout le code qui la
  suit (même si le fichier avec <code class="literal">declare</code> a été 
  inclus après, ça n&#039;affecte pas le fichier parent).
  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Ces déclarations sont identiques.<br /><br />// Vous pouvez utiliser ceci<br /></span><span style="color: #007700">declare(</span><span style="color: #0000BB">ticks</span><span style="color: #007700">=</span><span style="color: #0000BB">1</span><span style="color: #007700">) {<br />    </span><span style="color: #FF8000">// script entier ici<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #FF8000">// ou ceci<br /></span><span style="color: #007700">declare(</span><span style="color: #0000BB">ticks</span><span style="color: #007700">=</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// script entier ici<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>

 <div class="sect2" id="control-structures.declare.ticks">
  <h3 class="title">Ticks</h3>
  <p class="para">
   Un tick est un événement qui intervient toutes les <var class="varname">N</var>
   commandes bas niveau tickables, exécutées par l&#039;analyseur dans le bloc de
   <code class="literal">declare</code>. La valeur de <var class="varname">N</var> est spécifiée
   par la syntaxe <code class="code">ticks=<var class="varname">N</var></code> dans le bloc de
   directive <code class="literal">declare</code>.
  </p>
  <p class="para">
   Toutes les commandes ne sont pas tickables. Typiquement,
   les expressions de condition et les expressions d&#039;arguments
   ne sont pas tickables.
  </p>
  <p class="para">
   Un événement qui intervient à chaque tick est spécifié avec la fonction
   <span class="function"><a href="function.register-tick-function.php" class="function">register_tick_function()</a></span>. Se reporter à l&#039;exemple
   ci-dessous pour plus de détails. Il est à noter que plus d&#039;un événement peut
   intervenir par tick.
 </p>
 <p class="para">
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Exemple d&#039;utilisation des ticks</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">declare(</span><span style="color: #0000BB">ticks</span><span style="color: #007700">=</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Une fonction appelée à chaque événement tick<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">tick_handler</span><span style="color: #007700">()<br />{<br />    echo </span><span style="color: #DD0000">"tick_handler() called\n"</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">register_tick_function</span><span style="color: #007700">(</span><span style="color: #DD0000">'tick_handler'</span><span style="color: #007700">); </span><span style="color: #FF8000">// provoque un événement tick<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">; </span><span style="color: #FF8000">// provoque un événement tick<br /><br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">$a </span><span style="color: #007700">&gt; </span><span style="color: #0000BB">0</span><span style="color: #007700">) {<br />    </span><span style="color: #0000BB">$a </span><span style="color: #007700">+= </span><span style="color: #0000BB">2</span><span style="color: #007700">; </span><span style="color: #FF8000">// provoque un événement tick<br />    </span><span style="color: #007700">print </span><span style="color: #0000BB">$a</span><span style="color: #007700">; </span><span style="color: #FF8000">// provoque un événement tick<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="simpara">
  Voir aussi <span class="function"><a href="function.register-tick-function.php" class="function">register_tick_function()</a></span> et
  <span class="function"><a href="function.unregister-tick-function.php" class="function">unregister_tick_function()</a></span>.
 </p>
 </div>
 <div class="sect2" id="control-structures.declare.encoding">
  <h3 class="title">L&#039;encodage</h3>
  <p class="para">
   L&#039;encodage d&#039;un script peut être spécifié par script en utilisant la
   directive <code class="literal">encoding</code>.
  <div class="example" id="example-2">
   <p><strong>Exemple #2 Déclaration d&#039;un encodage pour un script</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: #007700">declare(</span><span style="color: #0000BB">encoding</span><span style="color: #007700">=</span><span style="color: #DD0000">'ISO-8859-1'</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// le code<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>

  <div class="caution"><strong class="caution">Attention</strong>
   <p class="simpara">
    Combinée avec les espaces de nommage, la seule syntaxe valable pour declare
    est <code class="literal">declare(encoding=&#039;...&#039;);</code> où <code class="literal">...</code>
    est la valeur de l&#039;encodage.  <code class="literal">declare(encoding=&#039;...&#039;) {}</code>
    soulèvera une erreur d&#039;interprétation dans le cas des espaces de nommage.
   </p>
  </div>
  <p class="para">
   Voir aussi
   <a href="ini.core.php#ini.zend.script-encoding" class="link">zend.script_encoding</a>.
  </p>
 </div>
</div><?php manual_footer($setup); ?>