<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'language.namespaces.faq.php',
    1 => 'Preguntas frecuentes',
    2 => 'Preguntas frecuentes: lo que debe saber sobre espacios de nombres',
  ),
  'up' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Los espacios de nombres',
  ),
  'prev' => 
  array (
    0 => 'language.namespaces.rules.php',
    1 => 'Reglas de resoluci&oacute;n de nombres',
  ),
  'next' => 
  array (
    0 => 'language.enumerations.php',
    1 => 'Enumeraciones',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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.faq" class="sect1">
  <h2 class="title">Preguntas frecuentes: lo que debe saber sobre espacios de nombres</h2>
  
  <p class="verinfo">(PHP 5 &gt;= 5.3.0, PHP 7, PHP 8)</p>
  <p class="para">
   Esta FAQ se divide en dos secciones: las preguntas comunes,
   y los puntos particulares de la implementación, que pueden ser
   útiles para la comprensión global.
  </p>
  <p class="para">
   Primero, las preguntas comunes.
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.shouldicare" class="link">Si no utilizo espacios
      de nombres, ¿debo preocuparme por ellos?</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.globalclass" class="link">¿Cómo utilizar una clase
      global o interna desde un espacio de nombres?</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.innamespace" class="link">¿Cómo utilizar las clases
      de espacios de nombres, las funciones o las constantes en su propio espacio?</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.full" class="link">
       ¿Cómo se resuelve un nombre como <code class="literal">\mon\nom</code> o
       <code class="literal">\nom</code>?
      </a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.qualified" class="link">¿Cómo se resuelve un nombre
      como <code class="literal">mon\nom</code>?</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.shortname1" class="link">¿Cómo se resuelve un nombre de clase
      sin calificación, como <code class="literal">nom</code>?</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.shortname2" class="link">¿Cómo se resuelve una función sin
      calificación o una constante de nombre <code class="literal">nom</code>?</a>
     </span>
    </li>
   </ol>
  </p>
  <p class="para">
   Aquí están los puntos particulares de la implementación, que pueden ser
   útiles para la comprensión global.
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.conflict" class="link">Los nombres importados no deben
      entrar en conflicto con las clases definidas en el mismo archivo</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.nested" class="link">Los espacios de nombres anidados
      están prohibidos</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.quote" class="link">Los nombres de espacios de nombres
      dinámicos deben proteger el backslash</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.constants" class="link">Las constantes no definidas
      referenciadas con un backslash producen un error fatal</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.builtinconst" class="link">Imposible reemplazar
      constantes especiales como <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></a>
     </span>
    </li>
   </ol>
  </p>
  <div class="sect2" id="language.namespaces.faq.shouldicare">
   <h3 class="title">Si no utilizo espacios de nombres, ¿debo preocuparme por ellos?</h3>
   <p class="para">
    No, los espacios de nombres no afectan el código existente, de una
    manera u otra, ni el código que se producirá y que no utiliza
    espacios de nombres. Puede escribir esto si lo desea:
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <p><strong>Ejemplo #1 Acceso a una clase global desde fuera de un espacio de nombres</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">\stdClass</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    Es una funcionalidad equivalente a:
   </p>
   <p class="para">
    <div class="example" id="example-2">
     <p><strong>Ejemplo #2 Acceder a clases globales fuera de un espacio de nombres</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">stdClass</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.globalclass">
   <h3 class="title">¿Cómo utilizar una clase global o interna desde un espacio de nombres?</h3>
   <p class="para">
    <div class="example" id="example-3">
     <p><strong>Ejemplo #3 Acceso a clases internas desde un espacio de nombres</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">foo</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">\stdClass</span><span style="color: #007700">;<br /><br />function </span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #0000BB">\ArrayObject $parameter_type_example </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">) {}<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">\DirectoryIterator</span><span style="color: #007700">::</span><span style="color: #0000BB">CURRENT_AS_FILEINFO</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// extensión de una clase interna o global<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">MyException </span><span style="color: #007700">extends </span><span style="color: #0000BB">\Exception </span><span style="color: #007700">{}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.innamespace">
   <h3 class="title">
    ¿Cómo utilizar las clases de espacios de nombres, las funciones o
    las constantes en su propio espacio?
   </h3>
   <p class="para">
    <div class="example" id="example-4">
     <p><strong>Ejemplo #4 Acceso a clases, funciones y constantes internas en un espacio de nombres</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">foo</span><span style="color: #007700">;<br /><br />class </span><span style="color: #0000BB">MaClasse </span><span style="color: #007700">{}<br /><br /></span><span style="color: #FF8000">// uso de una clase en el espacio de nombres actual, como tipo de parámetro<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #0000BB">MaClasse $parameter_type_example </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">) {}<br /><br /></span><span style="color: #FF8000">// otra manera de usar una clase en el espacio de nombres actual como tipo de parámetro<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">test</span><span style="color: #007700">(</span><span style="color: #0000BB">\foo\MaClasse $parameter_type_example </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">) {}<br /><br /></span><span style="color: #FF8000">// extensión de una clase en el espacio de nombres actual<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Extended </span><span style="color: #007700">extends </span><span style="color: #0000BB">MaClasse </span><span style="color: #007700">{}<br /><br /></span><span style="color: #FF8000">// acceso a una función global<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">\globalfunc</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// acceso a una constante global<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">\INI_ALL</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.full">
   <h3 class="title">
     ¿Cómo se resuelve un nombre como <code class="literal">\mon\nom</code> o
       <code class="literal">\nom</code>?
   </h3>
   <p class="para">
    Los nombres que comienzan con <code class="literal">\</code> siempre se resuelven como son,
    por lo que <code class="literal">\mon\nom</code> es en realidad
    <code class="literal">mon\nom</code>, y <code class="literal">\Exception</code> es
    <code class="literal">Exception</code>.
    <div class="example" id="example-5">
     <p><strong>Ejemplo #5 Nombres de espacios absolutos</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">foo</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">\mon\nom</span><span style="color: #007700">(); </span><span style="color: #FF8000">// instancia la clase "mon\nom"<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">\strlen</span><span style="color: #007700">(</span><span style="color: #DD0000">'hi'</span><span style="color: #007700">); </span><span style="color: #FF8000">// llama a la función "strlen"<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">\INI_ALL</span><span style="color: #007700">; </span><span style="color: #FF8000">// $a recibe el valor de la constante "INI_ALL"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.qualified">
   <h3 class="title">¿Cómo se resuelve un nombre como <code class="literal">mon\nom</code>?</h3>
   <p class="para">
    Los nombres que contienen un backslash pero no comienzan con un
    backslash, como <code class="literal">mon\nom</code> pueden resolverse de dos maneras
    diferentes.
   </p>
   <p class="para">
    Si ha habido una instrucción de importación que hace un alias de
    <code class="literal">mon</code>, entonces el alias importado se aplica en lugar
    de <code class="literal">mon</code>, y el espacio de nombres se convierte en <code class="literal">mon\nom</code>.
   </p>
   <p class="para">
    De lo contrario, el espacio de nombres actual se agrega antes del camino de la clase
    <code class="literal">mon\nom</code>.
   </p>
   <p class="para">
    <div class="example" id="example-6">
     <p><strong>Ejemplo #6 Nombres calificados</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">foo</span><span style="color: #007700">;<br />use </span><span style="color: #0000BB">blah\blah </span><span style="color: #007700">as </span><span style="color: #0000BB">foo</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">mon\nom</span><span style="color: #007700">(); </span><span style="color: #FF8000">// instancia la clase "foo\mon\nom"<br /></span><span style="color: #0000BB">foo\bar</span><span style="color: #007700">::</span><span style="color: #0000BB">name</span><span style="color: #007700">(); </span><span style="color: #FF8000">// llama al método estático "name" en la clase "blah\blah\bar"<br /></span><span style="color: #0000BB">mon\bar</span><span style="color: #007700">(); </span><span style="color: #FF8000">// llama a la función "foo\mon\bar"<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">mon\BAR</span><span style="color: #007700">; </span><span style="color: #FF8000">// asigna a $a el valor de la constante "foo\mon\BAR"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.shortname1">
   <h3 class="title">¿Cómo se resuelve un nombre de clase
    sin calificación, como <code class="literal">nom</code>?</h3>
   <p class="para">
    Los nombres de clases que no contienen backslash como
    <code class="literal">nom</code> pueden resolverse de dos maneras diferentes.
   </p>
   <p class="para">
    Si hay una instrucción de importación que define un alias para <code class="literal">nom</code>,
    entonces se aplica el alias.
   </p>
   <p class="para">
    De lo contrario, se utiliza el espacio de nombres actual y se prefiere a
    <code class="literal">nom</code>.
   </p>
   <p class="para">
    <div class="example" id="example-7">
     <p><strong>Ejemplo #7 Clases sin calificación</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">foo</span><span style="color: #007700">;<br />use </span><span style="color: #0000BB">blah\blah </span><span style="color: #007700">as </span><span style="color: #0000BB">foo</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">nom</span><span style="color: #007700">(); </span><span style="color: #FF8000">// instancia la clase "foo\nom"<br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">::</span><span style="color: #0000BB">nom</span><span style="color: #007700">(); </span><span style="color: #FF8000">// llama al método estático "nom" en la clase "blah\blah"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.shortname2">
   <h3 class="title">
    ¿Cómo se resuelve una función sin calificación o una constante
    de nombre <code class="literal">nom</code>?
   </h3>
   <p class="para">
    Las funciones y constantes que no tienen backslash en su nombre
    como <code class="literal">nom</code> se resuelven de dos maneras diferentes:
   </p>
   <p class="para">
    Primero, se prefiere el espacio de nombres actual a <code class="literal">nom</code>.
   </p>
   <p class="para">
    Luego, si la constante o función <code class="literal">nom</code> no existe
    en el espacio de nombres actual, se utiliza la versión global de la constante o la
    función <code class="literal">nom</code>.
   </p>
   <p class="para">
    <div class="example" id="example-8">
     <p><strong>Ejemplo #8 Funciones y constantes sin espacio de nombres</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">foo</span><span style="color: #007700">;<br />use </span><span style="color: #0000BB">blah\blah </span><span style="color: #007700">as </span><span style="color: #0000BB">foo</span><span style="color: #007700">;<br /><br />const </span><span style="color: #0000BB">FOO </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /><br />function </span><span style="color: #0000BB">mon</span><span style="color: #007700">() {}<br />function </span><span style="color: #0000BB">foo</span><span style="color: #007700">() {}<br />function </span><span style="color: #0000BB">sort</span><span style="color: #007700">(&amp;</span><span style="color: #0000BB">$a</span><span style="color: #007700">)<br />{<br />    </span><span style="color: #0000BB">\sort</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">); </span><span style="color: #FF8000">// Llamada a la función global "sort"<br />    </span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">array_flip</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br />    return </span><span style="color: #0000BB">$a</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">mon</span><span style="color: #007700">(); </span><span style="color: #FF8000">// llama "foo\mon"<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">'hi'</span><span style="color: #007700">); </span><span style="color: #FF8000">// llama a la función global "strlen" ya que "foo\strlen" no existe<br /></span><span style="color: #0000BB">$arr </span><span style="color: #007700">= array(</span><span style="color: #0000BB">1</span><span style="color: #007700">,</span><span style="color: #0000BB">3</span><span style="color: #007700">,</span><span style="color: #0000BB">2</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">sort</span><span style="color: #007700">(</span><span style="color: #0000BB">$arr</span><span style="color: #007700">); </span><span style="color: #FF8000">// llama a la función "foo\sort"<br /></span><span style="color: #0000BB">$c </span><span style="color: #007700">= </span><span style="color: #0000BB">foo</span><span style="color: #007700">(); </span><span style="color: #FF8000">// llama a la función "foo\foo": la importación no se aplica<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">FOO</span><span style="color: #007700">; </span><span style="color: #FF8000">// asigna a $a el valor de la constante "foo\FOO": la importación no se aplica<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">INI_ALL</span><span style="color: #007700">; </span><span style="color: #FF8000">// asigna a $b el valor de la constante "INI_ALL"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.conflict">
   <h3 class="title">Los nombres importados no deben
    entrar en conflicto con las clases definidas en el mismo archivo</h3>
   <p class="para">
    La siguiente combinación de scripts es válida:
    <div class="informalexample">
     <p class="simpara">file1.php</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">mes\trucs</span><span style="color: #007700">;<br />class </span><span style="color: #0000BB">MaClasse </span><span style="color: #007700">{}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <p class="simpara">another.php</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">another</span><span style="color: #007700">;<br />class </span><span style="color: #0000BB">untruc </span><span style="color: #007700">{}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <p class="simpara">file2.php</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">mes\trucs</span><span style="color: #007700">;<br />include </span><span style="color: #DD0000">'file1.php'</span><span style="color: #007700">;<br />include </span><span style="color: #DD0000">'another.php'</span><span style="color: #007700">;<br /><br />use </span><span style="color: #0000BB">another\untruc </span><span style="color: #007700">as </span><span style="color: #0000BB">MaClasse</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">MaClasse</span><span style="color: #007700">; </span><span style="color: #FF8000">// instancia la clase "untruc" del espacio de nombres another<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    No hay conflicto de nombres, incluso si la clase <code class="literal">MaClasse</code> existe
    en el espacio de nombres <code class="literal">mes\trucs</code>, ya que la definición de
    MaClasse está en un archivo separado. Sin embargo, el siguiente
    ejemplo produce un error fatal debido a un conflicto de nombres, ya que
    MaClasse se define en el mismo archivo que la instrucción
    use.
    <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: #007700">namespace </span><span style="color: #0000BB">mes\trucs</span><span style="color: #007700">;<br />use </span><span style="color: #0000BB">another\untruc </span><span style="color: #007700">as </span><span style="color: #0000BB">MaClasse</span><span style="color: #007700">;<br />class </span><span style="color: #0000BB">MaClasse </span><span style="color: #007700">{} </span><span style="color: #FF8000">// error fatal: MaClasse está en conflicto con la instrucción de importación<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">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.nested">
   <h3 class="title">Los espacios de nombres anidados están prohibidos</h3>
   <p class="para">
    PHP no permite anidar espacios de nombres.
    <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: #007700">namespace </span><span style="color: #0000BB">mes\trucs </span><span style="color: #007700">{<br />    namespace </span><span style="color: #0000BB">nested </span><span style="color: #007700">{<br />        class </span><span style="color: #0000BB">foo </span><span style="color: #007700">{}<br />    }<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    Sin embargo, es fácil simular espacios de nombres anidados,
    como esto:
    <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: #007700">namespace </span><span style="color: #0000BB">mes\trucs\nested </span><span style="color: #007700">{<br />    class </span><span style="color: #0000BB">foo </span><span style="color: #007700">{}<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>

  <div class="sect2" id="language.namespaces.faq.quote">
   <h3 class="title">Los nombres de espacios de nombres dinámicos deben proteger el backslash</h3>
   <p class="para">
    Es muy importante darse cuenta de que, como los backslash se utilizan como
    caracteres de escape en las cadenas, siempre deben duplicarse
    para poder usarlos en una cadena. De lo contrario, existe el riesgo de uso
    inesperado:
    <div class="example" id="example-9">
     <p><strong>Ejemplo #9 Peligros de usar espacios de nombres en una cadena</strong></p>
     <div class="example-contents">
      <div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$a </span><span style="color: #007700">= </span><span style="color: #DD0000">"dangereux\nom"</span><span style="color: #007700">; </span><span style="color: #FF8000">// \n es una nueva línea en una cadena!<br /></span><span style="color: #0000BB">$obj </span><span style="color: #007700">= new </span><span style="color: #0000BB">$a</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #DD0000">'pas\vraiment\dangereux'</span><span style="color: #007700">; </span><span style="color: #FF8000">// ningún problema aquí<br /></span><span style="color: #0000BB">$obj </span><span style="color: #007700">= new </span><span style="color: #0000BB">$a</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    En una cadena de comillas dobles, la secuencia de escape es mucho más
    segura de usar, pero aún se recomienda proteger siempre los backslashs en una cadena que contiene un espacio de nombres.
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.constants">
   <h3 class="title">Constantes no definidas referenciadas con un backslash producen un error fatal</h3>
   <p class="para">
    Cualquier constante no definida que no tenga calificador como
    <code class="literal">FOO</code> producirá una advertencia: PHP asumía que
    <code class="literal">FOO</code> era el valor de la constante. Cualquier constante,
    calificada parcialmente o totalmente, que contenga un backslash, producirá
    un error fatal si no está definida.
    <div class="example" id="example-10">
     <p><strong>Ejemplo #10 Constantes no definidas</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">bar</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">FOO</span><span style="color: #007700">; </span><span style="color: #FF8000">// produce una advertencia: constante no definida "FOO", que toma el valor de "FOO";<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">\FOO</span><span style="color: #007700">; </span><span style="color: #FF8000">// error fatal, constante de espacio de nombres no definida FOO<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">Bar\FOO</span><span style="color: #007700">; </span><span style="color: #FF8000">// error fatal, constante de espacio de nombres no definida bar\Bar\FOO<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">\Bar\FOO</span><span style="color: #007700">; </span><span style="color: #FF8000">// error fatal, constante de espacio de nombres no definida Bar\FOO<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.builtinconst">
   <h3 class="title">Imposible reemplazar constantes especiales como <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></h3>
   <p class="para">
    Cualquier intento en un espacio de nombres de reemplazar las constantes
    nativas o especiales, produce un error fatal.
    <div class="example" id="example-11">
     <p><strong>Ejemplo #11 Constantes que no pueden ser redefinidas</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">bar</span><span style="color: #007700">;<br />const </span><span style="color: #0000BB">NULL </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #FF8000">// error fatal;<br /></span><span style="color: #007700">const </span><span style="color: #0000BB">true </span><span style="color: #007700">= </span><span style="color: #DD0000">'stupid'</span><span style="color: #007700">; </span><span style="color: #FF8000">// aún otro error fatal;<br />// etc.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>
 </div><?php manual_footer($setup); ?>