Tengo un pequeño problema con los espacios de nombres y las usedeclaraciones.
Tengo tres archivos: ShapeInterface.php, Shape.phpy Circle.php.
Estoy tratando de hacer esto usando rutas relativas, así que puse esto en todas las clases:
namespace Shape;
En mi clase circular tengo lo siguiente:
namespace Shape;
//use Shape;
//use ShapeInterface;
include 'Shape.php';
include 'ShapeInterface.php';
class Circle extends Shape implements ShapeInterface{ ....
Si utilizo las includedeclaraciones, no obtengo errores. Si pruebo las usedeclaraciones obtengo:
Error fatal: la clase 'Shape \ Shape' no se encuentra en /Users/shawn/Documents/work/sites/workspace/shape/Circle.php en la línea 8
¿Podría alguien darme una pequeña guía sobre el tema?
php
namespaces
Shawn Northrop
fuente
fuente

Respuestas:
El
useoperador sirve para dar alias a nombres de clases, interfaces u otros espacios de nombres. La mayoría de lasusedeclaraciones se refieren a un espacio de nombres o una clase que le gustaría acortar:es equivalente a:
Si el
useoperador se utiliza con un nombre de clase o interfaz, tiene los siguientes usos:El
useoperador no debe confundirse con la carga automática . Una clase se carga automáticamente (eliminando la necesidad de hacerloinclude) registrando un cargador automático (por ejemplo, conspl_autoload_register). Es posible que desee leer PSR-4 para ver una implementación de autocargador adecuada.fuente
Si necesita ordenar su código en espacios de nombres, simplemente use la palabra clave
namespace:file1.php
En file2.php
También puede utilizar
use. Si en el archivo2 ponesuse foo\bar as mypath;debe usar en
mypathlugar debaren cualquier lugar del archivo:El uso
use foo\bar;es igual ause foo\bar as bar;.fuente