Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pchan

Dúvida a respeito de sintaxe de PSR-0

Recommended Posts

Olá pessoal, boa tarde.

Tenho uma dúvida referente a padronização de namespaces no PHP e preciso saber qual seria a forma correta para trabalhar com eles de acordo com a PSR-0, portanto se alguém daqui pelo menos me der uma luz guia agradeço muito.

Estava colocando namespaces em PHP e utilizando com o mesmo raciocínio do package do Java: br.com.meudominio.sistema.controller, sendo que cada um termo separado pelo ponto é um diretório quando utilizo o Java.

Já no PHP tentei fazer parecido desta forma: br\com\meudominio\sistema\controller e aí que me pairaram as dúvidas.

Lendo a documentação da PSR-0 no git do PHP Fig (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md) e assistindo a algumas aulas percebi que existe uma pasta chamada vendor que me parece ser utilizada para definir "um pacote de terceiro" e aí a nomenclatura ficaria assim:

\Doctrine\Common\IsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php

Mas pelo que percebi, o namespace é declarado depois da pasta vendor e aí a declaração no arquivo php ficaria algo assim:

namespace \Doctrine\Common;

Reparei que a pasta vendor parece ficar (no máximo) a apenas dois diretórios de distância do arquivo php com é o caso acima.

Então, baseado nessas informações ou na forma correta de utilização deste padrão (que não sei se entendi direito) eu deveria utilizar algo assim na estrutura de pastas do meu projeto?

br\com\meudominio\vendor\sistema\controller

E depois referenciar o meu namespace desta forma: sistema\controller?

Muito obrigado pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @pchan , quanto a pasta vendor, está correto!

ela não é declarada normalmente no namespace.

Caso esteja utilizando o composer para gerenciamento das dependências do seu projeto (dependências são os pacotes de terceiros), o composer possui seu próprio autoloader responsável por carregar os arquivos de seus pacotes.

Quanto a seu desenvolvimento, você tem opções.

Uma seria criar uma pacote separado da aplicação de usa-lo através do composer. Desta forma tudo seria carregado por ele.

Outra opção é você colocar em algum outro diretório (não vendor), e fazer com que seu autoloader (não o do composer) faça o carregamento de seus arquivos.

Estou supondo que esteja utilizando o composer.

Qualquer coisa só chamar,

abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.