Por que é sublinhado convertido para o separador de diretório no PSR-0 padrão?

StackOverflow https://stackoverflow.com//questions/11696219

  •  12-12-2019
  •  | 
  •  

Pergunta

O PSR-0 (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md a norma especifica que um carácter de sublinhado no nome da classe deve ser convertido para um separador de diretório na caixa de nome de arquivo correspondente.

Para mim isso não parece ser uma boa idéia de como ele cria um monte de erros quando alguém que não conhece o padrão inocentemente utiliza um carácter de sublinhado no nome da classe e, de repente, o autoloader não é possível encontrar a classe e toda a espécie de erros estranhos aparecem (ver este stackoverflow problema, por exemplo: Symfony2.1 mapeamento de erro:class_parents())

Então eu acho que deve haver algum tipo de razão (histórico de compatibilidade com alguns biblioteca?) para este "recurso".A minha pergunta é:alguém sabe por que ele foi introduzido no PSR-0 padrão?

Foi útil?

Solução

Ressalta foram usados nos tempos que o PHP não suporta ainda espaços de nomes.Um "correto", organizado projeto segue a convenção de espaço de nomes a arquivos da mesma forma como a estrutura de diretório.

Está a apenas algumas geral "regra" para organizar arquivos em um projeto.

Então, se você tem uma estrutura de diretório:

root
  Name
    Package
      MyClass.php

As pessoas costumavam fazer:

class Name_Package_MyClass {}

Mas agora que temos namespaces torna-se:

namespace Name\Package;

class MyClass { }

É apenas o estilo de codificação diretriz que garante que toda a gente faz a mesma coisa.

Então, o que o PSR-0 não é o mapa, tanto o antigo e o novo estilo de espaço de nomes para um nome de arquivo.

Outras dicas

O PHP suporta namespaces a partir da versão 5.3, antes, o mais comum convenção foi usar sublinhado como espaço de nomes (diretório) de separação, por exemplo: My_Project_ClassName foi mapeada como /path/to/my/My/Project/ClassName.Eu acredito que a compatibilidade é o principal motivo.

Tenha em mente que o padrão PSR-0 foi escrito para alguns projetos específicos e não necessariamente a melhor opção para o seu próprio projeto.Como diz em seu site: "Se outras pessoas querem adotar o que estamos fazendo, são bem-vindos para fazê-lo, mas isso não é o objetivo".PSR-0 é muito restritivo, eu não escolheria usá-lo apenas porque outras pessoas são.Considere o que você realmente quer do seu projeto e se será benéfico para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top