<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Curso_POO_PHP_Espazos_de_nomes</id>
	<title>Curso POO PHP Espazos de nomes - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Curso_POO_PHP_Espazos_de_nomes"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Espazos_de_nomes&amp;action=history"/>
	<updated>2026-10-25T16:31:25Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Espazos_de_nomes&amp;diff=36762&amp;oldid=prev</id>
		<title>Vlourido: /* Operador use */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Espazos_de_nomes&amp;diff=36762&amp;oldid=prev"/>
		<updated>2013-08-01T11:13:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Operador use&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Espazos de nomes ==&lt;br /&gt;
&lt;br /&gt;
A partires da versión 5.3 de PHP, introduciuse na linguaxe a capacidade de empregar espazos de nomes. É unha característica similar a que podemos atopar noutras linguaxes como Java ou C#. Os espazos de nomes permiten agrupar baixo un nome un conxunto de elementos (clases, interfaces, funcións e constantes mediante &amp;#039;&amp;#039;&amp;#039;const&amp;#039;&amp;#039;&amp;#039;, non define), de xeito que non se produzan conflictos entre os seus nomes e outros nomes iguais presentes noutros espazos de nomes.&lt;br /&gt;
&lt;br /&gt;
=== Declaración dos espazos de nomes ===&lt;br /&gt;
&lt;br /&gt;
Os espazos de nomes [http://www.php.net/manual/es/language.namespaces.definition.php decláranse empregando a palabra &amp;#039;&amp;#039;&amp;#039;namespace&amp;#039;&amp;#039;&amp;#039;]. Faise antes de calquera outro código (excepto sentenzas [http://www.php.net/manual/es/control-structures.declare.php declare]), e existen dúas sintaxes posibles:&lt;br /&gt;
&lt;br /&gt;
* Rematando a sentenza nun punto e coma (&amp;#039;&amp;#039;&amp;#039;;&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
namespace Platega;&lt;br /&gt;
&lt;br /&gt;
class xxx {&lt;br /&gt;
   ...&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pechando entre chaves o código pertencente ao espazo de nomes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
namespace Platega {&lt;br /&gt;
   class xxx {&lt;br /&gt;
      ...&lt;br /&gt;
   }&lt;br /&gt;
   ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recoméndase empregar a primeira forma. A segunda é máis lexible cando temos dous ou máis espazos de nomes nun mesmo ficheiro, aínda que é aconsellable ter un único espazo de nomes por ficheiro.&lt;br /&gt;
&lt;br /&gt;
Tamén é posible ter un mesmo espazo de nomes espallado en varios ficheiros. Deste xeito poderiamos, por exemplo, definir cada clase dun espazo de nomes no seu propio ficheiro.&lt;br /&gt;
&lt;br /&gt;
No caso das librarías complexas de código, aconséllase empregar xerarquías de espazos de nomes. Faise separando cada rama do espazo de nomes da seguinte por unha barra invertida (&amp;#039;&amp;#039;&amp;#039;\&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
namespace Platega\Informatica\PHP;&lt;br /&gt;
&lt;br /&gt;
class xxx {&lt;br /&gt;
   ...&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Utilización dos espazos de nomes ===&lt;br /&gt;
&lt;br /&gt;
Todos os obxecto que se atopan fora dun espazo de nomes definido mediante un namespace, forman parte do espazo de nomes global. Dependendo do espazo de nomes ao que pertenza o código que estea a executarse, poderemos empergar unha ou outra sintaxe para acceder a elementos no mesmo ou noutro espazo de nomes. Por exemplo, no seguinte código:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
namespace Platega {&lt;br /&gt;
   const OLA = &amp;quot;Ola Platega.&amp;quot;;&lt;br /&gt;
      ...&lt;br /&gt;
}&lt;br /&gt;
namespace Platega\PHP {&lt;br /&gt;
   const OLA = &amp;quot;Ola Platega PHP.&amp;quot;;&lt;br /&gt;
      ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Se o código que estamos a executar se atopa &amp;#039;&amp;#039;&amp;#039;no espazo de nomes global&amp;#039;&amp;#039;&amp;#039;, teremos que empregar [http://www.php.net/manual/es/language.namespaces.rules.php nomes completamente cualificados] (rutas absolutas) para acceder ás constantes &amp;quot;OLA&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Amosa &amp;quot;Ola Platega.&amp;quot;&lt;br /&gt;
echo \Platega\OLA;&lt;br /&gt;
&lt;br /&gt;
// Amosa &amp;quot;Ola Platega PHP.&amp;quot;&lt;br /&gt;
echo \Platega\PHP\OLA;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Como o espazo de nomes global atópase na raíz (&amp;#039;&amp;#039;&amp;#039;\&amp;#039;&amp;#039;&amp;#039;), tamén podemos emprear [http://www.php.net/manual/es/language.namespaces.rules.php nomes parcialmente cualificados] (rutas relativas) para acceder ás contantes anteriores:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Amosa &amp;quot;Ola Platega.&amp;quot;&lt;br /&gt;
echo Platega\OLA;&lt;br /&gt;
&lt;br /&gt;
// Amosa &amp;quot;Ola Platega PHP.&amp;quot;&lt;br /&gt;
echo Platega\PHP\OLA;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Se o código que estamos a executar se atopa &amp;#039;&amp;#039;&amp;#039;no espazo de nomes PLATEGA&amp;#039;&amp;#039;&amp;#039;, podemos emprear nomes non cualificados, totalmente cualificados ou parcialmente cualificados do seguinte xeito:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Nome totalmente cualificado. Amosa &amp;quot;Ola Platega.&amp;quot;&lt;br /&gt;
echo \Platega\OLA;&lt;br /&gt;
// Nome non cualificado. Tamén amosa &amp;quot;Ola Platega.&amp;quot;&lt;br /&gt;
echo OLA;&lt;br /&gt;
&lt;br /&gt;
// Nome totalmente cualificado. Amosa &amp;quot;Ola Platega PHP.&amp;quot;&lt;br /&gt;
echo \Platega\PHP\OLA;&lt;br /&gt;
// Nome parcialmente cualificado. Amosa &amp;quot;Ola Platega PHP.&amp;quot;&lt;br /&gt;
echo PHP\OLA;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Neste caso, cando empregamos nomes non cualificados PHP busca os elementos primeiro no espazo de nomes actual e despois no global. Para acceder a elementos do espazo de nomes global nos que ocurra unha colisión de nomes, teremos que empregar unha barra invertida.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Nome non cualificado. Accede á constante do espazo de nomes global PHP_VERSION&lt;br /&gt;
echo PHP_VERSION;&lt;br /&gt;
// Se no espazo de nomes actual houbera outra constante con ese mesmo nome&lt;br /&gt;
//  teriamos que empregar un nome completamente cualificado para acceder á do espazo de nomes global&lt;br /&gt;
echo \PHP_VERSION;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Operador use ===&lt;br /&gt;
&lt;br /&gt;
Podemos empregar o operador &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/language.namespaces.importing.php use]&amp;#039;&amp;#039;&amp;#039;, o mesmo que se usa nos [[Curso_POO_PHP_Rasgos|trazos]], para simplificar as referencias aos elementos dun espazo de nomes. Por exemplo, partindo dos seguintes espazos de nomes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
namespace Platega {&lt;br /&gt;
   const OLA = &amp;quot;Ola Platega.&amp;quot;;&lt;br /&gt;
   class Proba {&lt;br /&gt;
      function __construct() {echo &amp;quot;Proba en Platega.&amp;quot; . &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;;}&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
namespace Platega\PHP {&lt;br /&gt;
   const OLA = &amp;quot;Ola Platega PHP.&amp;quot;;&lt;br /&gt;
   class Proba {&lt;br /&gt;
      function __construct() {echo &amp;quot;Proba en Platega PHP.&amp;quot; . &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;;}&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se queremos empregar elementos pertencentes ao espazo de nomes &amp;quot;Platega\PHP&amp;quot;, o normal é facer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$proba_platega_php = new \Platega\PHP\Proba();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cando traballamos con moitos elementos dun mesmo espazo de nomes, podemos porles un alias para acortar as rutas. Esta é a utilidade de &amp;#039;&amp;#039;&amp;#039;use&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
use Platega\PHP as P;&lt;br /&gt;
$proba_platega_php = new P\Proba();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se omitimos a segunda parte do &amp;#039;&amp;#039;use&amp;#039;&amp;#039; (o &amp;#039;&amp;#039;as&amp;#039;&amp;#039;), o alias a empregar é o último nome na xerarquía.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
use Platega\PHP ;&lt;br /&gt;
$proba_platega_php = new PHP\Proba();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O operador &amp;#039;&amp;#039;use&amp;#039;&amp;#039; tamén admite alias para os nomes das clases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
use Platega\PHP\Proba ;&lt;br /&gt;
$proba_platega_php = new Proba();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pero se dende dentro do espazo de nomes &amp;quot;Platega&amp;quot; facemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
namespace Platega;&lt;br /&gt;
use Platega\PHP\Proba;&lt;br /&gt;
$proba = new Proba();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O nome da clase &amp;quot;Proba&amp;quot; pode facer referencia á do espazo de nomes actual (\Platega) ou á clase &amp;quot;Proba&amp;quot; da que fixemos o alias, a do espazo de nomes &amp;quot;\Platega\PHP&amp;quot;. Cando isto sucede, PHP prioriza os alias sobre os elementos da clase actual. Isto é, o código anterior amosa a cadea &amp;quot;Proba en Platega PHP.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Nestes casos podemos empregar a palabra clave &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/language.namespaces.nsconstants.php namespace]&amp;#039;&amp;#039;&amp;#039; para facer referencia aos elementos do espazo de nomes actual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
namespace Platega;&lt;br /&gt;
use Platega\PHP\Proba;&lt;br /&gt;
$proba1 = new Proba();           // Amosa &amp;quot;Proba en Platega PHP.&amp;quot;&lt;br /&gt;
$proba2 = new namespace\Proba(); // Amosa &amp;quot;Proba en Platega.&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Vlourido|Víctor Lourido]] 12:33 23 jul 2013 (CEST)&lt;/div&gt;</summary>
		<author><name>Vlourido</name></author>
	</entry>
</feed>