Pergunta

Um bom design ditames única escrevendo cada função uma vez. No PHP eu estou fazendo isso usando incluir arquivos (como Utils.php e authenticate.php), com o include_once comando PHP. No entanto, eu não tenho sido capaz de encontrar quaisquer padrões ou melhores práticas para PHP incluem arquivos. O que você em StackOverflow sugere?

Eu estou procurando:

  • padrões de nomenclatura
  • Padrões de código
  • Design Patterns
  • Sugestões para definir tipos de retorno de funções comuns (Agora eu só estou usando arrays associativos).
Foi útil?

Solução

Uma convenção eu gosto de usar é colocar cada classe em seu próprio arquivo chamado ClassName.class.php e, em seguida, configurar o autoloader para incluir os arquivos de classe. Ou às vezes eu vou colocá-los todos em um aulas / subdiretório e apenas nomeá-los ClassName.php. Depende de quantos classe vs. não-classe inclui estou esperando.

Se você organizar as suas funções de utilidade em classes e torná-los métodos estáticos em vez disso, você pode começar afastado com a escrita de apenas um único require_once () em seus arquivos de nível superior. Esta abordagem pode ou não pode ser apropriado para o seu código ou estilo de codificação.

Quanto aos tipos de retorno, eu tento seguir as convenções utilizadas nas funções internas. Retornar um tipo apropriado ao pedido, ou retornar false em caso de falha. Apenas certifique-se de usar a === operador durante a verificação de falsa nos resultados.

O fato de que você está preocupado com convenções sugere que você já está no caminho certo. Se você está familiarizado com qualquer outra linguagem OOP como Java, C ++, C #, etc., então você vai achar que você pode seguir um monte das mesmas convenções graças ao bondade OOP em PHP5 .

Outras dicas

Whatever convenção de nomenclatura que você acaba usando (eu prefiro ter pistas de Java ou C #, sempre que possível) certifique-se se você usar arquivos de inclusão para as funções que eles realmente não executar qualquer código em cima inclusive, e nunca incluem o mesmo arquivo duas vezes. (Usar incluem- uma vez ou exigem-once )

Algumas dessas normas já foram escritos. A maioria dos grandes projetos seguirá e padrão de seu próprio.

Aqui está um escrito por Zend e é o padrão utilizado no âmbito Zend. http://framework.zend.com/manual/en/coding-standard. html

Além disso, PERA sempre teve alguns padrões de codificação bastante rígidos: http://pear.php.net/manual/en/standards.php

A minha resposta preferida é que embora para o seu próprio projeto você deve usar o que você sente confortável com, e ser internamente consistente. Para outros projetos, seguir suas regras. A consistência permite maior legibilidade do código. Meus próprios padrões não são os mesmos que os de pêra. Eu não travessão com quatro espaços (eu uso guias) e eu nunca usar caso camelo como nomes de função, mas mesmo assim se eu estou editando algo de outro projeto que eu vou com tudo o que o projeto faz.

Eu fiz o seguinte. Primeiro, eu criei um filtro interceptar, interceptar todas as solicitações da web, eu também criou uma versão que iria trabalhar com comandos de linha de comando.

Ambos os interceptores iria para um arquivo alça de boot, que configurar um carregador automático. Este arquivo como a função de carregamento automático e um hash. Para o hash a chave é o nome da classe, eo valor é o caminho do arquivo para o arquivo de classe. A função de autoload simplesmente de tirar o nome da classe e executar um requerem no arquivo.

Algumas dicas de desempenho se você precisar deles, usar aspas simples para definir o arquivo, como eles são um pouco mais rápido, uma vez que não está interpretada, também uso exigem / include, em vez de suas versões _once, isso é garantido para correr uma vez, eo primeiro é um justo pouco mais rápido.

A descrição acima é grande, de fato, mesmo com uma grande base de código com uma tonelada de aulas, o hash não é que o desempenho grande e nunca foi uma preocupação. E mais importante, não está casado com alguma classe espaço de nome pseudo louco convenção de nomenclatura, veja abaixo.

A outra opção é delimitada nome, truque nome pseudo espaço. Isso é menos atraente como espaços de nome virá com 5,3 e eu ver este ser bruto como renomear estes em toda a base de código será menos divertido. Independentemente disso, é assim que funciona, assumir uma raiz para todo o seu código. Então Todas as aulas são nomeados com base na passagem de diretório necessário para chegar lá, delimitados por um caractere, como '_', e, em seguida, o próprio nome da classe, o arquivo será nomeado após a classe, no entanto. Desta forma, o local da classe é a codificação no nome, eo carregador automático pode usar isso. O problema com este método além really_long_crazy_class_names_MyClass, é que há um pouco de processamento em cada chamada, mas que pode ser otimização prematura, e novamente nomear espaços estão chegando.

por exemplo.

/code root
ClassA ClassA.php
  /subfolder
  subFolder_ClassB ClassB.php
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top