<?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.rationale.php',
    1 => 'Introducci&oacute;n',
    2 => 'Introducci&oacute;n a los espacios de nombres',
  ),
  'up' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Los espacios de nombres',
  ),
  'prev' => 
  array (
    0 => 'language.namespaces.php',
    1 => 'Los espacios de nombres',
  ),
  'next' => 
  array (
    0 => 'language.namespaces.definition.php',
    1 => 'Espacios de nombres',
  ),
  '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.rationale" class="sect1">
  <h2 class="title">Introducción a los espacios de nombres</h2>
  
  <p class="verinfo">(PHP 5 &gt;= 5.3.0, PHP 7, PHP 8)</p>
  <p class="simpara">
   ¿Qué son los espacios de nombres? En su definición más amplia, representan
   un medio para encapsular elementos. Esto puede concebirse como un concepto
   abstracto, por varias razones. Por ejemplo, en un sistema de archivos, los
   directorios representan un grupo de archivos asociados y sirven como espacio de nombres
   para los archivos que contienen. Un ejemplo concreto es que el archivo
   <code class="literal">foo.txt</code> puede existir en ambos directorios
   <code class="literal">/home/greg</code> y <code class="literal">/home/other</code>, pero que
   las dos copias de <code class="literal">foo.txt</code> no pueden coexistir
   en el mismo directorio. Además, para acceder al archivo <code class="literal">foo.txt</code>
   desde fuera del directorio <code class="literal">/home/greg</code>, es necesario especificar
   el nombre del directorio utilizando un separador de directorios, como
   <code class="literal">/home/greg/foo.txt</code>. El mismo principio se aplica a los
   espacios de nombres en el mundo de la programación.
  </p>

  <p class="simpara">
   En el mundo de PHP, los espacios de nombres están diseñados para resolver dos problemas
   que enfrentan los autores de bibliotecas y aplicaciones al reutilizar elementos
   como clases o bibliotecas de funciones:
  </p>
  <p class="para">
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      Colisiones de nombres entre el código que se crea, las clases, funciones
      o constantes internas de PHP, o las de bibliotecas de terceros.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      La capacidad de crear alias o acortar nombres como Nombres_Extremadamente_Largos
      para ayudar a resolver el primer problema y mejorar la legibilidad
      del código.
     </span>
    </li>
   </ol>
  </p>
  <p class="simpara">
   Los espacios de nombres de PHP proporcionan un medio para agrupar clases, interfaces,
   funciones o constantes. Aquí hay un ejemplo de sintaxis de los espacios de nombres de PHP:
  </p>
  <div class="example" id="example-1">
   <p><strong>Ejemplo #1 Ejemplo de sintaxis de espacios 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">mon\nom</span><span style="color: #007700">; </span><span style="color: #FF8000">// Ver la sección "Definición de espacios de nombres"<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">// Ver la sección "Espacio 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">// Ver "Uso de espacios de nombres: retorno al espacio 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">// Ver "El operador namespace y 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">// Ver "Espacios de nombres y características dinámicas"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
   <blockquote class="note"><p><strong class="note">Nota</strong>: 
    <span class="simpara">
     Los nombres de espacios de nombres no son sensibles a mayúsculas/minúsculas.
    </span>
   </p></blockquote>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Los espacios de nombres <code class="literal">PHP</code>, así como los nombres compuestos
    que comienzan con estos nombres (como <code class="literal">PHP\Classes</code>)
    están reservados para el uso interno del lenguaje y no deben usarse
    en el código del espacio de usuario.
   </p>
  </p></blockquote>
 </div><?php manual_footer($setup); ?>