<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.namespaces.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'language.namespaces.rationale.php',
    1 => 'Introduction',
    2 => 'Introduction aux espaces de noms',
  ),
  'up' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Les espaces de noms',
  ),
  'prev' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Les espaces de noms',
  ),
  'next' => 
  array (
    0 => 'language.namespaces.definition.php',
    1 => 'Espaces de noms',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'language/namespaces.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.namespaces.rationale" class="sect1">
  <h2 class="title">Introduction aux espaces de noms</h2>
  
  <p class="verinfo">(PHP 5 &gt;= 5.3.0, PHP 7, PHP 8)</p>
  <p class="simpara">
   Que sont les espaces de noms ? Dans leur définition la plus large, ils représentent
   un moyen d&#039;encapsuler des éléments. Cela peut être conçu comme un concept
   abstrait, pour plusieurs raisons. Par exemple, dans un système de fichiers, les
   dossiers représentent un groupe de fichiers associés et servent d&#039;espace de noms
   pour les fichiers qu&#039;ils contiennent. Un exemple concret est que le fichier
   <code class="literal">foo.txt</code> peut exister dans les deux dossiers
   <code class="literal">/home/greg</code> et <code class="literal">/home/other</code>, mais que
   les deux copies de <code class="literal">foo.txt</code> ne peuvent pas co-exister
   dans le même dossier. De plus, pour accéder au fichier <code class="literal">foo.txt</code>
   depuis l&#039;extérieur du dossier <code class="literal">/home/greg</code>, il faut préciser
   le nom du dossier en utilisant un séparateur de dossier, tel que
   <code class="literal">/home/greg/foo.txt</code>. Le même principe s&#039;applique aux
   espaces de noms dans le monde de la programmation.
  </p>

  <p class="simpara">
   Dans le monde PHP, les espaces de noms sont conçus pour résoudre deux problèmes
   que rencontrent les auteurs de bibliothèques et d&#039;applications lors de la réutilisation
   d&#039;éléments tels que des classes ou des bibliothèques de fonctions :
  </p>
  <p class="para">
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      Collisions de noms entre le code créé, les classes, fonctions
      ou constantes internes de PHP, ou celles de bibliothèques tierces.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      La capacité de faire des alias ou de raccourcir des Noms_Extremement_Long
      pour aider à la résolution du premier problème, et améliorer la lisibilité
      du code.
     </span>
    </li>
   </ol>
  </p>
  <p class="simpara">
   Les espaces de noms PHP fournissent un moyen pour regrouper des classes, interfaces,
   fonctions ou constantes. Voici un exemple de syntaxe des espaces de noms PHP :
  </p>
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Exemple de syntaxe des espaces de noms</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">namespace </span><span style="color: #0000BB">mon\nom</span><span style="color: #007700">; </span><span style="color: #FF8000">// Voyez la section "Définition des espaces de noms"<br /><br /></span><span style="color: #007700">class </span><span style="color: #0000BB">MaClasse </span><span style="color: #007700">{}<br />function </span><span style="color: #0000BB">mafonction</span><span style="color: #007700">() {}<br />const </span><span style="color: #0000BB">MACONSTANTE </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">MaClasse</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$c </span><span style="color: #007700">= new </span><span style="color: #0000BB">\mon\nom\MaClasse</span><span style="color: #007700">; </span><span style="color: #FF8000">// Voyez la section "Espace global"<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #DD0000">'bonjour'</span><span style="color: #007700">); </span><span style="color: #FF8000">// Voyez "Utilisation des espaces de noms : retour<br />       // à l'espace global<br /><br /></span><span style="color: #0000BB">$d </span><span style="color: #007700">= </span><span style="color: #0000BB">namespace\MACONSTANTE</span><span style="color: #007700">; </span><span style="color: #FF8000">// Voyez "L'opérateur namespace et la constante __NAMESPACE__<br /><br /></span><span style="color: #0000BB">$d </span><span style="color: #007700">= </span><span style="color: #0000BB">__NAMESPACE__ </span><span style="color: #007700">. </span><span style="color: #DD0000">'\MACONSTANTE'</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">constant</span><span style="color: #007700">(</span><span style="color: #0000BB">$d</span><span style="color: #007700">); </span><span style="color: #FF8000">// Voyez "Espaces de noms et fonctionnalités dynamiques"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <span class="simpara">
     Les noms d&#039;espaces de noms ne sont pas sensibles à la casse.
    </span>
   </p></blockquote>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Les espaces de noms <code class="literal">PHP</code>, mais aussi les noms composés
    commençant par ces noms (comme <code class="literal">PHP\Classes</code>)
    sont réservés pour l&#039;utilisation interne du langage, et ne doivent pas être utilisés
    dans le code de l&#039;espace utilisateur.
   </p>
  </p></blockquote>
 </div><?php manual_footer($setup); ?>