<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'language.namespaces.faq.php',
    1 => 'Perguntas Frequentes',
    2 => 'Perguntas Frequentes: Coisas que voc&ecirc; precisa saber sobre namespaces',
  ),
  'up' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Namespaces',
  ),
  'prev' => 
  array (
    0 => 'language.namespaces.rules.php',
    1 => 'Regras de resolu&ccedil;&atilde;o de nomes',
  ),
  'next' => 
  array (
    0 => 'language.enumerations.php',
    1 => 'Enumera&ccedil;&otilde;es',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    '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">Perguntas Frequentes: Coisas que você precisa saber sobre namespaces</h2>
  
  <p class="verinfo">(PHP 5 &gt;= 5.3.0, PHP 7, PHP 8)</p>
  <p class="para">
   Estas perguntas frequentes são divididas em duas seções: perguntas comuns e alguns detalhes de
   implementação úteis para entender os pormenores.
  </p>
  <p class="para">
   Primeiro, as perguntas comuns.
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.shouldicare" class="link">Se não usar namespaces, devo
      me importar com esta documentação?</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.globalclass" class="link">Como usar classes internas ou globais
      em um namespace?</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.innamespace" class="link">Como usar classes,
      funções ou constantes de namespace em seu próprio namespace?</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.full" class="link">
       Como nomes como <code class="literal">\meu\nome</code> ou <code class="literal">\nome</code>
       são resolvidos?
      </a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.qualified" class="link">Como um nome como
      <code class="literal">meu\nome</code> é resolvido?</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.shortname1" class="link">Como um nome de classe não qualificado
      como <code class="literal">nome</code> é resolvido?</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.shortname2" class="link">Como um nome de função
      não qualificado ou nome de constante não qualificado
      como <code class="literal">nome</code> é resolvido?</a>
     </span>
    </li>
   </ol>
  </p>
  <p class="para">
   Há alguns detalhes de implementação dos namespaces úteis para
   entendê-los melhor.
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.conflict" class="link">Nomes de importação não devem entrar em conflito com
      classes definidas no mesmo arquivo</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.nested" class="link">Namespaces aninhados não são permitidos.
      </a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.quote" class="link">Nomes de namespace dinâmicos (identificadores
      entre aspas) devem escapar a barra invertida</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.constants" class="link">Constantes indefinidas referenciadas
      usando qualquer barra invertida geram erro fatal</a>
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <a href="language.namespaces.faq.php#language.namespaces.faq.builtinconst" class="link">Não é possível substituir
      as constantes especiais <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> ou <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">Se não usar namespaces, devo me importar com esta documentação?</h3>
   <p class="para">
    Não. Namespaces não afetam nenhum código existente de forma alguma, ou qualquer
    código ainda a ser escrito que não contenha namespaces. Você pode
    escrever este código se desejar:
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <p><strong>Exemplo #1 Acessando classes globais fora de um namespace</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">
    O exemplo acima é equivalente ao seguinte código:
   </p>
   <p class="para">
    <div class="example" id="example-2">
     <p><strong>Exemplo #2 Acessando classes globais fora de um namespace</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">Como usar classes internas ou globais em um namespace?</h3>
   <p class="para">
    <div class="example" id="example-3">
     <p><strong>Exemplo #3 Acessando classes internas em namespaces</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 $exemplo_com_tipo_de_parametro </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">// estendendo uma classe interna ou global<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">MinhaExcecao </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">
    Como usar classes, funções ou constantes de namespace em seu próprio
    namespace?
   </h3>
   <p class="para">
    <div class="example" id="example-4">
     <p><strong>Exemplo #4 Acessando classes, funções ou constantes internas em namespaces</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">MinhaClasse </span><span style="color: #007700">{}<br /><br /></span><span style="color: #FF8000">// usando uma classe do namespace atual 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">MinhaClasse $exemplo_com_tipo_de_parametro </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">) {}<br /></span><span style="color: #FF8000">// outra forma de usar a classe do namespace atual 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\MinhaClasse $exemplo_com_tipo_de_parametro </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">) {}<br /><br /></span><span style="color: #FF8000">// estendendo uma classe do namespace atual<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Estendida </span><span style="color: #007700">extends </span><span style="color: #0000BB">MinhaClasse </span><span style="color: #007700">{}<br /><br /></span><span style="color: #FF8000">// acessando uma função global<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">\funcao_global</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// acessando uma 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">
     Como nomes como <code class="literal">\meu\nome</code> ou <code class="literal">\nome</code>
     são resolvidos?
   </h3>
   <p class="para">
    Nomes que começam com uma barra invertida (<code class="literal">\</code>) sempre são resolvidos
    para seu conteúdo exato, então <code class="literal">\meu\nome</code> é o mesmo que <code class="literal">meu\nome</code>
    e <code class="literal">\Exception</code> é o mesmo que <code class="literal">Exception</code>.
    <div class="example" id="example-5">
     <p><strong>Exemplo #5 Nomes totalmente qualificados</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">\meu\nome</span><span style="color: #007700">(); </span><span style="color: #FF8000">// instancia um objeto da classe "meu\nome"<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">\strlen</span><span style="color: #007700">(</span><span style="color: #DD0000">'olá'</span><span style="color: #007700">); </span><span style="color: #FF8000">// invoca a função "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">// define $a com o valor da 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">Como um nome como <code class="literal">meu\nome</code> é resolvido?</h3>
   <p class="para">
    Nomes que contêm barra invertida, mas não começam com uma barra invertida, como
    <code class="literal">meu\nome</code> podem ser resolvidos de duas maneiras diferentes.
   </p>
   <p class="para">
    Se houver
    uma instrução de importação que cria o apelido <code class="literal">meu</code> para outro nome, então
    o apelido da importação será aplicado ao <code class="literal">meu</code> em <code class="literal">meu\nome</code>.
   </p>
   <p class="para">
    Caso contrário, o nome do namespace atual será prefixado a <code class="literal">meu\nome</code>.
   </p>
   <p class="para">
    <div class="example" id="example-6">
     <p><strong>Exemplo #6 Nomes qualificados</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">bla\bla </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">meu\nome</span><span style="color: #007700">(); </span><span style="color: #FF8000">// instancia um objeto da classe "foo\meu\nome"<br /></span><span style="color: #0000BB">foo\bar</span><span style="color: #007700">::</span><span style="color: #0000BB">nome</span><span style="color: #007700">(); </span><span style="color: #FF8000">// chama o método estático "nome" na classe "bla\bla\bar"<br /></span><span style="color: #0000BB">minha\bar</span><span style="color: #007700">(); </span><span style="color: #FF8000">// chama a função "foo\minha\bar"<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">minha\BAR</span><span style="color: #007700">; </span><span style="color: #FF8000">// define $a com o valor da constante "foo\minha\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">Como um nome de classe não qualificado como <code class="literal">nome</code> é resolvido?</h3>
   <p class="para">
    Nomes de classes que não contêm barra invertida como
    <code class="literal">nome</code> podem ser resolvidos de duas maneiras diferentes.
   </p>
   <p class="para">
    Se houver
    uma instrução de importação que cria o apelido <code class="literal">nome</code> para outro nome, então
    o apelido da importação será aplicado.
   </p>
   <p class="para">
    Caso contrário, o nome do namespace atual será prefixado a <code class="literal">nome</code>.
   </p>
   <p class="para">
    <div class="example" id="example-7">
     <p><strong>Exemplo #7 Nomes de classe não qualificados</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">bla\bla </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">nome</span><span style="color: #007700">(); </span><span style="color: #FF8000">// instancia um objeto da classe "foo\nome"<br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">::</span><span style="color: #0000BB">nome</span><span style="color: #007700">(); </span><span style="color: #FF8000">// chama o método estático "nome" na classe "bla\bla"<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">
    Como um nome de função não qualificado ou nome de constante não qualificado
    como <code class="literal">nome</code> é resolvido?
   </h3>
   <p class="para">
    Nomes de funções ou constantes que não contêm barra invertida como
    <code class="literal">nome</code> podem ser resolvidos de duas maneiras diferentes.
   </p>
   <p class="para">
    Primeiro, o nome do namespace atual será prefixado a <code class="literal">nome</code>.
   </p>
   <p class="para">
    Finalmente, se a constante ou função <code class="literal">nome</code> não existir
    no namespace atual, uma constante ou função global <code class="literal">nome</code>
    será usada se existir.
   </p>
   <p class="para">
    <div class="example" id="example-8">
     <p><strong>Exemplo #8 Nomes de funções ou constantes não qualificados</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">bla\bla </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">minha</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">// chama a função 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">minha</span><span style="color: #007700">(); </span><span style="color: #FF8000">// chama "foo\minha"<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">// chama a função global "strlen" porque não existe "foo\strlen"<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">// chama a função "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">// chama a função "foo\foo" - a importação não é aplicada<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">// define $a com o valor da constante "foo\FOO" - a importação não é aplicada<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">// define $b com o valor da constante global "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">Nomes de importação não devem entrar em conflito com classes definidas no mesmo arquivo</h3>
   <p class="para">
    As seguintes combinações de script são válidas:
    <div class="informalexample">
     <p class="simpara">arquivo1.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">minha\coisa</span><span style="color: #007700">;<br />class </span><span style="color: #0000BB">MinhaClasse </span><span style="color: #007700">{}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

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

     <p class="simpara">arquivo2.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">minha\coisa</span><span style="color: #007700">;<br />include </span><span style="color: #DD0000">'arquivo1.php'</span><span style="color: #007700">;<br />include </span><span style="color: #DD0000">'outra.php'</span><span style="color: #007700">;<br /><br />use </span><span style="color: #0000BB">outra\coisa </span><span style="color: #007700">as </span><span style="color: #0000BB">MinhaClasse</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">MinhaClasse</span><span style="color: #007700">; </span><span style="color: #FF8000">// instancia um objeto da classe coisa do namespace outra<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    Não há conflito de nomes, mesmo que a classe <code class="literal">MinhaClasse</code> exista
    dentro do namespace <code class="literal">minha\coisa</code>, porque a definição de MinhaClasse está
    em um arquivo separado. No entanto, o próximo exemplo causa um erro fatal de conflito de nomes
    porque MinhaClasse está definida no mesmo arquivo que a declaração 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">minha\coisa</span><span style="color: #007700">;<br />use </span><span style="color: #0000BB">outra\coisa </span><span style="color: #007700">as </span><span style="color: #0000BB">MinhaClasse</span><span style="color: #007700">;<br />class </span><span style="color: #0000BB">MinhaClasse </span><span style="color: #007700">{} </span><span style="color: #FF8000">// erro fatal: MinhaClasse está em conflito com a declaração de importação<br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">MinhaClasse</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">Namespaces aninhados não são permitidos</h3>
   <p class="para">
    O PHP não permite aninhar namespaces.
    <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">minha\coisa </span><span style="color: #007700">{<br />    namespace </span><span style="color: #0000BB">aninhada </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>
    No entanto, é fácil simular namespaces aninhados da seguinte forma:
    <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">minha\coisa\aninhada </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">Nomes de namespace dinâmicos (identificadores entre aspas) devem escapar a barra invertida</h3>
   <p class="para">
    É muito importante perceber que, como a barra invertida é usada como um caractere de escape
    dentro de strings, ela sempre deve ser duplicada quando usada em uma string. Caso contrário,
    existe o risco de consequências não desejadas:
    <div class="example" id="example-9">
     <p><strong>Exemplo #9 Perigos do uso de nomes com namespace em uma string com aspas duplas</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">"\nome\perigoso"</span><span style="color: #007700">; </span><span style="color: #FF8000">// \n é uma nova linha dentro de strings com aspas duplas!<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">'nada\perigoso'</span><span style="color: #007700">; </span><span style="color: #FF8000">// não há problemas aqui.<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>
    Dentro de uma string com aspas simples, a sequência de escape da barra invertida é muito mais segura de usar, mas
    ainda é uma prática recomendada escapar as barras invertidas em todas as strings.
   </p>
  </div>
  <div class="sect2" id="language.namespaces.faq.constants">
   <h3 class="title">Constantes indefinidas referenciadas usando qualquer barra invertida geram erro fatal</h3>
   <p class="para">
    Qualquer constante indefinida não qualificada como <code class="literal">FOO</code> gerará
    um alerta explicando que o PHP assumiu que <code class="literal">FOO</code> era o valor
    da constante. Qualquer constante, qualificada ou totalmente qualificada, que contenha
    uma barra invertida produzirá um erro fatal se não for encontrada.
    <div class="example" id="example-10">
     <p><strong>Exemplo #10 Constantes não 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">// Produz um alerta - constante indefinida FOO assumiu "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">// Erro fatal, constante de namespace indefinida 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">// Erro fatal, constante de namespace indefinida 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">// Erro fatal, constante de namespace indefinida 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">Não é possível substituir as constantes especiais <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> ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></h3>
   <p class="para">
    Qualquer tentativa de definir uma constante de namespace que seja uma constante especial nativa
    resultará em um erro fatal.
    <div class="example" id="example-11">
     <p><strong>Exemplo #11 Constantes não 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 />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">// Erro fatal<br /></span><span style="color: #007700">const </span><span style="color: #0000BB">true </span><span style="color: #007700">= </span><span style="color: #DD0000">'verdadeiro'</span><span style="color: #007700">; </span><span style="color: #FF8000">// Também um erro fatal<br />// etc.<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

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