Estou tendo alguns problemas com os namespaces e as use
instruções.
Eu tenho três arquivos: ShapeInterface.php
, Shape.php
e Circle.php
.
Estou tentando fazer isso usando caminhos relativos, então coloquei isso em todas as classes:
namespace Shape;
Na minha classe de círculo, tenho o seguinte:
namespace Shape;
//use Shape;
//use ShapeInterface;
include 'Shape.php';
include 'ShapeInterface.php';
class Circle extends Shape implements ShapeInterface{ ....
Se eu usar as include
declarações, não recebo erros. Se eu tentar as use
declarações, obtenho:
Erro fatal: Classe 'Forma \ Forma' não encontrada em /Users/shawn/Documents/work/sites/workspace/shape/Circle.php na linha 8
Alguém poderia me dar uma pequena orientação sobre o assunto?
php
namespaces
Shawn Northrop
fonte
fonte
Respostas:
O
use
operador serve para atribuir aliases a nomes de classes, interfaces ou outros namespaces. A maioria dasuse
declarações se refere a um namespace ou classe que você gostaria de encurtar:é equivalente a:
Se o
use
operador for usado com uma classe ou nome de interface, ele terá os seguintes usos:O
use
operador não deve ser confundido com carregamento automático . Uma classe é carregada automaticamente (negando a necessidade deinclude
) registrando um carregador automático (por exemplo, comspl_autoload_register
). Você pode querer ler PSR-4 para ver uma implementação de autoloader adequada.fonte
Se você precisar ordenar seu código em namespaces, basta usar a palavra
namespace
- chave :file1.php
Em file2.php
Você também pode usar
use
. Se no arquivo 2 você colocaruse foo\bar as mypath;
você precisa usar em
mypath
vez debar
qualquer lugar no arquivo:Usar
use foo\bar;
é igual ause foo\bar as bar;
.fonte