Namespaces

Foram introduzidos na linguagem na versão 5.3.0 e tem como principal função poder utilizar o mesmo nome de classe em classes diferentes, porem o arquivo da classe deve estar em um diretório diferente.

Ex: Imagine duas classes que definem pessoa, ambas com mesmo nome.

Pessoa.php, este arquivo foi criado no diretório /Src/Pessoa/Pessoa.php, porem o segundo arquivo com o mesmo nome foi criado no diretório /Src/Endereco/Pessoa.php, se no conteúdo das classes forem definidos os namespaces corretamente esses arquivos não irão entrar em conflito, mesmo ambos tendo o mesmo nome.

Os namespaces também ajudam a evitar conflitos de nome com bibliotecas de terceiros que por ventura utilizarmos em nosso projeto, antes dos namespaces era comum encontrar nomes de classes muito grandes, isso com o objetivo de evitar possíveis conflitos entre classes.

Para criar um namespace, devemos utilizar a palavra reservada namespace, seguido pelo conteúdo desejado. Ex

<?php

namespace src;

Pode conter tambem sub niveis. Ex

<?php

namespace src\endereco;

Devemos pensar em namespaces como uma estrutura hierarquica de diretorios.

Observacoes:

A declaração do namespace deve ser logo apos a tag de abertura <?php, nenhuma função deve ser executada antes da definição do namespace.

Por convenção deve se utilizar o padrão camel case para definição dos namespaces, porem e perfeitamente valido utilizar sem essa convenção.

As regras para declaração dos namespaces seguem o mesmo padrão para a definição de variáveis.

Para utilizar os namespaces devemos utilizar a palavra reservada (use) seguido pelo namespace desejado.

Quando utilizarmos classes do proprio PHP, a mesma deve ser chamada com uma \ no inicio. Ex \PDO($dsn, $usuario, $senha); Pois por padrão o PHP procura a classe no namespace atual, sendo assim necessário informar a linguagem o \, que diz que essa classe e da própria linguagem.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.