7
respostas

Vantagens do NameSpace

Prezados,

Em que o uso de namespaces supera o uso do require? Informar App\Pasta\Subpasta\Classe dá tanto trabalho que informar require "src\pasta\subpasta\arquivo.php". Aliás, até mais trabalho pois tem que informar o namespace em cada arquivo também.

De fato, em que o namespace nos ajuda? Se for apenas separar arquivos honônimos, não bastaria apenas colocá-los em pastas distintas?

7 respostas

Oi Elaine, beleza?

Quando você começa a trabalhar com inúmeros arquivos o require se torna uma dor de cabeça que só na prática mesmo para você notar o quão dificultoso de torna o desenvolvimento.

Um detalhe bem importante é que o uso dos namespace resolveu o problema de pacotes/classes com nomes iguais. Antigamente com o uso do require não existia uma padronização e o conflito de você ter classes com nomes iguais no seu sistema não era incomum.

Caso eu tenha respondido a sua dúvida não esqueça de marcar a solução para que o tópico seja finalizado.

Bons estudos.

Olá!

Entendo perfeitamente que o namespace ajuda a não termos conflito com classes de mesmo nome. Só não entendi qual a diferença tão vantajosa que ele nos traz. Não seria a mesma coisa que simplesmente colocar em pastas diferentes? Teria algum exemplo prático?

Oi Elaine, só a questão de não ter conflito com classes de mesmo nome já é uma vantagem muito grande por que apenas colocar as classes em pastas diferentes não resolveria esse conflito.

Imagine que você tenha uma classe de negócio em seu sistema chamada de Client, e então você precisa baixar alguma dependência em seu projeto e nela também tem uma classe chamada Client. Sem os namespaces, por mais que elas estejam em locais diferentes irão se chamar Client e haverá conflito, isso vai te causar muita dor de cabeça. Além de tudo, os namespaces deixam o código muito mais legível, isso é importante na manutenção do software.

Olá, Elaine. Tudo bem? Isso que o Diego disse já é uma grande vantagem, pois evita muita dor de cabeça em um projeto.

Mais para frente quando você for ver o curso "PHP Composer: Dependências, Autoload e Publicação", terá uma parte do curso falando sobre o "autoload", que de forma resumida ele carrega automaticamente as classes quando você declara os namespaces corretamente, ou seja, quando você for escrever o código abaixo:

$student = new Student(); /// Quando você escrever o "new Student" o autoload automaticamente irá escrever para você a importação da classe.

Pode não ter tanto sentido agora a utilização de Namespace, porém lá para frente irá fazer.

Espero ter ajudado =)

Oi Vinicius,

Essa importação automática, que eu imagino a que vc se refere, é por que o seu editor é capaz de buscar as classes nos diretórios do seu projeto através de algum plugin, mas tem a ver sim com a questão dos namespaces.

Ficou mais claro a importância do namespace, Elaine?

Exatamente, Diego. Com o autoload e os namespace o editor consegue trazer de forma automática.