Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Namespaces

Boa tarde.

1) Fiquei pensando, se o namespace tem o mesmo nome das pastas (nesse exemplo), ele faria diferença no caso de classes com nomes iguais? Pois eu poderia colocar essas classes com nomes iguais em pastas diferentes. Não sei se deu para entender, mas é que nas aulas o professor falou sobre separação física (das pastas) e lógica (dos namespaces), mas pra mim pareceu que ambas as separações fazem a mesma coisa. Não entendi a diferença, principalmente no caso de usarmos namespaces com o mesmo nome das pastas.

2) Outra coisa, existe alguma forma de adicionar os namespaces automaticamente de acordo com a pasta que criamos os arquivos? Pergunto porque eu atualmente trabalho com C# e estou aprendendo PHP e lá quando crio uma classe o namespace já vem.

6 respostas
  1. Você pode ter classes com mesmo nome em namespaces diferentes assim como pode ter arquivos com o mesmo nome em pastas diferentes
  2. Tem sim. Vamos aprender sobre autoload na atividade 7 desse capítulo 2.

Sobre 1) Então, foi dito na aula que o namespace vem para solucionar a questao de criar classes com o mesmo nome ou mesmo baixa-las de algum lugar e terem o mesmo nome das do seu projeto. Porém eu poderia solucionar isso simplesmente com pastas não?

Sobre a 2) Já passei da aula de autoload aqui e pelo que entendi ele gera automaticamente os require_once para buscar o lugar físico do arquivo e não os namespaces para buscar o local lógico. O que estou dizendo é que em C# se eu tiver uma pasta Produtos e criar uma classe chamada Bicicleta.cs dentro dessa pasta, automaticamente essa classe ja vem com o namespace em cima assim: "NomeProjeto/Produtos/Bicicleta.cs". Aqui no PHP tem como fazer assim também? Pergunto porque temos que importar 1 por um manualmente e pra quem usa visual studio code como eu ainda é mais complicado pois ele não dá sugestões de código (não sei se existe uma extensão pra isso).

solução!

Porém eu poderia solucionar isso simplesmente com pastas não?

Se você tiver 2 classes chamadas Admin, como o PHP vai saber qual instanciar? Agora se uma for Seu\App\Admin e a outra for Lib\Externa\Admin, aí não existe problema. Esse é o ponto.

automaticamente essa classe ja vem com o namespace em cima

Quem faz isso é o Visual Studio. Não é um detalhe da linguagem, e sim da IDE. O PHPStorm para PHP, por exemplo, também já preenche o namespace. :-)

Ah entendi. Esse detalhe da IDE então de adicionar em cima o namespace, é possível fazer baixando alguma extensão no vs code?

Provavelmente, Karolina, mas eu não uso VS Code então não sei te dizer qual extensão faria isso.

ok, obg