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_globals
e magic_quotes
sã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 this
uma 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.