O que é o "PHP Way"?

8

Vejo referências constantes ao "Caminho", como descrições de uma estrutura ou aplicativo específico como "Pythonic", uma pessoa como um "hacker Perl" ou "código Ruby verdadeiro", mas onde estão os "hackers PHP" os aplicativos "PHP-ic", o "verdadeiro estilo PHP"?

Isso me fez pensar - o PHP ainda tem um estilo definido? Dizer que o PHP é facilmente "mutável" para outros estilos não conta, pois o mesmo vale para qualquer linguagem razoável.

Qualquer entrada muito apreciada.

Jonathan Chan
fonte
3
"Se ainda funciona, não está terminado"
sevenseacat 9/08/11
quora.com/How-do-a-programmer-become-a-brogrammer - talvez possamos chamá-lo de "PHmoronic"?
Psr

Respostas:

13

Ao contrário de muitas outras linguagens de programação, o PHP não tem um pensamento unificador ou um conjunto de idéias principais: ele começou como um conjunto muito pragmático de scripts perl, e os recursos foram adicionados conforme necessário, sem muito processo de design formal. O resultado é uma linguagem bastante útil e completa, mas não muito consistente por si só. A imensa popularidade da linguagem piora as coisas; assim que um novo recurso é introduzido, ele é praticamente gravado, porque todo mundo começa a usá-lo. Assim, alguns erros de design foram consolidados, e a equipe do PHP tem muita dificuldade em fazer com que as pessoas se afastem deles - register_globalse magic_quotessão apenas dois exemplos de coisas que pareciam boas idéias na época, mas que se tornaram desenfreadas.

Outro fator é a cultura que cresceu em torno do PHP. Quando sua popularidade começou a crescer, o caso de uso típico do PHP era adicionar pequenos trechos da funcionalidade do servidor em documentos HTML estáticos. Uma grande parte do público-alvo era de entusiastas e não programadores que usavam o PHP para adicionar um pouco de coisas dinâmicas a seus sites estáticos. A cultura resultante é muito pragmática, sem muito interesse em estabelecer uma 'maneira adequada'; Embora seja possível escrever PHP bastante elegante, grande parte da comunidade de usuários simplesmente não se interessa muito, desde que funcione.

Por outro lado, linguagens como python, ruby, Lisp, C #, Haskell e outras tiveram uma filosofia desde o início, e a comunidade geralmente a adota e empurra a linguagem para que ela cumpra suas promessas. (Caso esteja interessado, digite import thisuma sessão python interativa). Ter uma filosofia significa que há uma diretriz para o uso e a extensão do idioma, e isso também leva a uma comunidade mais homogênea - se você não concorda com a filosofia, é mais provável que você simplesmente se afaste e encontre uma que se encaixe melhor ; é mais provável que a comunidade resultante chegue a consenso sobre todo o tipo de coisas.

Dito isto, o PHP tem pontos fortes e fracos, além de casos extremos obscuros; escrever código PHP idiomático significa usar os pontos fortes e evitar os pontos fracos e obscuros, como em qualquer outra linguagem.

tdammers
fonte
De que maneira o php não é consistente? A pura simplicidade do idioma leva a um idioma extremamente ortogonal que você nunca precisa adivinhar qual sintaxe usar. Em particular, estruturas de dados complexas (árvores, listas vinculadas, gráficos de arestas) são tratadas quase tão bem quanto em Python e certamente melhores do que em Java ou C ++ STL.
James Anderson
3
O PHP coloca tudo no namespace global; as várias funções da API usam convenções de nomenclatura diferentes, algumas modificam seus argumentos no local, enquanto outras em uma situação semelhante retornam o argumento modificado, apenas metade de suas funções de string está disponível nas versões mb_XXX (), há três tipos de variáveis ​​com diferentes regras de escopo, você chama uma função para definir uma constante, pode (mas não precisa) chamar uma função para criar ou ler uma variável global; eu poderia continuar por muito tempo.
tdammers
@tdammers O PHP não coloca "tudo" no espaço global, enquanto muitas funções estão no espaço de nomes global, muitas outras não - veja, por exemplo, DOP ou SPL. Variáveis ​​globais, locais e estáticas existem em muitos idiomas e de forma alguma são exclusivas do PHP. Você pode definir constantes sem chamar uma função. Você pode escrever uma função que acessa globais (é o ponto de ter globais), mas não há absolutamente nada de errado nisso.
StasM
Penso que, pela simples razão de que essa resposta realmente fornece respaldo às suas reivindicações, ela deve ser selecionada como Melhor Resposta, mas as outras respostas também foram muito úteis (e me ajudaram a perceber quanto argumento uma pergunta como essa pode trazer!)
Jonathan Chan
15

Acho que quando as pessoas dizem o caminho do PHP, ele tem um peso negativo, esse é o termo que usamos em uma loja de poliolefinas (Python, C #, Ruby). Tais como "faça-o-e-jogue-para fora", como ele poderia ter feito, vazamentos de identificadores de arquivo, vulnerabilidades de injeção de SQL, loops aninhados muito profundos, funções de 3000 linhas e ainda serão classificados como ' Maneira PHP '. Se, em uma revisão por pares, alguém me dissesse que o código é muito 'PHP-way', eu ficaria profundamente ofendido.

Aprecio que isso causará algumas chamas, por isso reconheço que há pessoas conhecidas por produzir um bom código PHP, e o PHP é usado em alguns dos principais sites de produção. Só estou dizendo o que a multidão pensa e vê com mais frequência, a opinião é transmitida pelos atos da maioria, não da minoria.

sa93
fonte
5
O engraçado é que tudo o que você mencionou não tem absolutamente nada a ver com o PHP - e até recentemente ele nem sequer tinha que ir, então não há possibilidade de haver tanto código PHP por aí com esse tipo que deu o nome a um estilo distinto.
StasM
O StasM pode criar um monstro de desempenho insustentável, inseguro ou ruim (ou uma mistura de todos) em qualquer idioma. Atualmente, o VM / intérprete raramente é o problema. O que estou dizendo é que a baixa barreira do PHP à entrada, poluição global do namespace e outros recursos / desvantagens das linguagens parecem atrair uma multidão de pessoas que jogam juntas de qualquer maneira e, consequentemente, da reputação. Sua reputação inegável, eu estava apenas tentando brilhar alguma luz que sobre ele
sa93
StasM, você errou o ponto, eu nunca disse que incluiria gotos.
sa93
3
@ sa93 - Sou um grande fã de php e uso-o desde o php3. O StasM está praticamente correto - a maioria das pessoas pensa que a saída do PHP é ruim. Isto é por uma boa razão, a maioria é. Só preciso viver com isso, do lado positivo, torna muito fácil brilhar na contratação de php.
Jonno
Eu vi um monte de código J2EE, que é muito pior do que qualquer código php que eu já vi.
James Anderson
4

Se existe uma "maneira php" é "Apenas faça!".

Embora o php possua todas as construções OO modernas, Classes, Espaços de Nome dos Módulos, Introspecção etc., além de todos os itens de programação dinâmica geralmente associados a linguagens mais fashoinable, como Python. Você raramente os vê sendo usados ​​apenas por isso, ou vê programadores de php obcecados com a "pureza" de sua implementação.

Não tenho ideia de por que deveria haver uma diferença cultural - mas existe.

Existem vários horrores por aí e isso talvez reflita que muito código "php" é "My First Webapp" ou mesmo "My First Program".

Pessoalmente, acho muito fácil ler / entender código php profissionalmente escrito, geralmente é muito mais fácil ler do que aplicativos Java em todas as suas classes Factory e metade da lógica em arquivos XML.

James Anderson
fonte
4

Eu diria que o modo PHP é o "Programador de Fita Adesiva" - envie-o rapidamente, envie-o rapidamente, preocupe-se com tudo mais tarde e corrija os bugs sem pensar no futuro. Embora isso não seja de forma alguma uma condenação do próprio PHP (você pode fazer isso em qualquer idioma), apenas recentemente os desenvolvedores de PHP começaram a se perguntar sobre os padrões de engenharia e design de software, SOLID, testes e similares.

Wayne Molina
fonte
2

Eu diria que a ideia do PHP está sendo prática. O que isso significa em cada caso separado é difícil de definir, mas, por exemplo, se algo requer um formulário HTML e cinco linhas de código, não coloque a estrutura MVC com 20 classes lá. Por outro lado, se você desenvolver um aplicativo para 20 milhões de pessoas, coloque a estrutura lá e tenha controle de lógica, apresentação e fluxo separadamente. Mas não há nada de especial no PHP aqui, então acho que pode não ser uma resposta satisfatória.

Eu não acho que há um estilo PHP. Pessoalmente, acho que a noção de que existe um estilo adequado a todos os usuários de linguagem só faz sentido se a linguagem tiver um campo de uso muito restrito, o que definitivamente não é verdadeiro para PHP.

Aplicativos específicos têm seus estilos - por exemplo, se você olhar para o Zend Framework, verá um código OO com interfaces definidas, APIs controladas etc. onde você poderá reconhecer facilmente padrões familiares de design. Por outro lado, existem aplicativos adotando uma abordagem mais processual, como o Drupal.

Eu entendo que isso não dá muito do "verdadeiro estilo PHP", mas é provavelmente porque não existe isso. Existem práticas recomendadas etc., mas receio que não seja o que você está procurando.

StasM
fonte
1

Algumas pessoas usam php como uma marca de desdém - apenas um fato, pessoalmente, sou um fã.

No entanto, para mim, o que definiu uma abordagem php é essencialmente a falta de contexto do aplicativo. Não há contexto de aplicativo integrado comparado ao .NET ou ao mundo Java.

Isso faz com que os servidores php fiquem essencialmente sem estado (desde que as sessões sejam movidas para outro servidor, por exemplo, disco compartilhado ou db)

Isso é basicamente o que penso quando penso no modo php.

Jonno
fonte
1

Outra resposta! Desta vez, é mais uma observação sobre a "cultura" da programação.

O PHP está na mesma posição que o Javascript (ECMAscript para pedantes!) Estava em 2002. Um pequeno grupo de programadores especialistas apreciou sua excelência, mas a opinião geral era de que era uma linguagem de script pobre e obscura, útil apenas para rolar banners e usuários irritantes. com pop-ups.

Então veio o AJAX e, de repente, o mundo inteiro ficou admirado com o poder e a elegância do Javascript.

Embora não seja tão elegante quanto o Javascript, o php compartilha muito do poder e da simplicidade dessa linguagem, e existe um consenso sobre a maneira "correta" de programar o php para sistemas grandes.

O outro indicador de quão bom é o php em sua área de especialização é a falta de frameworks para aplicativos mais sérios. Muitos programadores experientes ficam felizes em usar o "php", pois ele fica sem a ajuda de um mega framework. A pura proliferação de frameworks e outras ajudas indica para mim que Java, Python etc. não acertaram e que os programadores que usam essas linguagens estão profundamente descontentes e inseguros sobre como um aplicativo Web deve ser criado. No entanto, quando eles veem como o código php simples e simples é usado para implementar com êxito sites complexos sem as configurações XML ilegíveis, o dialeto do modelo do mês ou o roll seu próprio dialeto ORM, eles tiram a conclusão errada - que o php deve ser ruim porque não possui classes IntegerFactory, injeção de dependência etc.

De fato, todas essas coisas são facilmente implementadas no php e são frequentemente usadas, se necessário - é apenas que a implementação geralmente é um par de linhas de php e não é reconhecida como tal por programadores que estão acostumados a fazer a mesma coisa com grandes bibliotecas e APIs complexas.

php é simples. "simples" é o complemento mais alto que você pode fornecer para um software e o mais difícil de obter.

James Anderson
fonte