Por que as funções embutidas em PHP são chamadas de forma aleatória?

Parece que não há um padrão real para a forma como as funções são chamadas, str_replace, strrpos, strip_tags, stripslashes são apenas alguns.

Por que esse é o caso?

EDITAR – isso não significava como um post tipo “troll” – apenas algo que eu penso toda vez que eu uso o idioma!

A linguagem PHP cresceu um tanto de forma orgânica, então a nomeação de funções é casual em partes. Muitos dos diferentes formatos são retidos por razões de compatibilidade reversa.

Uma ligeira digressão, mas, além dos problemas com nomeação de function, outro efeito colateral infeliz do crescimento orgânico da linguagem é uma aparente inconsistência na ordenação de argumentos, por exemplo, considere as funções em_array e strstr :

bool in_array (mixed $needle, array $haystack [, bool $strict]) string strstr (string $haystack, mixed $needle [, bool $before_needle=false]) 

Curiosamente, o PHP parece ser internamente consistente com essas ordens, já que todas as funções de string parecem usar $haystack, $needle enquanto as funções da matriz são o contrário, mas isso pode demorar um pouco de acostumar-se a alguém novo no PHP. Há uma boa publicação no ExpressionEngine falando sobre esse peculiaridade particular com mais detalhes, bem como uma discussão sobre a lista de erros do PHP .

À medida que a língua amadurece, existem várias tentativas de implementar uma convenção de nomeação mais rígida e consistente – a partir da documentação do Zend Framework :

Os nomes de funções sempre devem começar com uma letra minúscula. Quando um nome de function consiste em mais de uma palavra, a primeira letra de cada nova palavra deve ser maiúscula. Isso geralmente é chamado de formatação “camelCase”.

filterInput ()

getElementById ()

Para uma tomada ligeiramente diferente, de 20 possíveis razões pelas quais os nomes das funções PHP e os parâmetros são estranhos :

  • O PHP cola APIs e humanos juntos, e às vezes isso fica bagunçado

  • As funções PHP foram desenvolvidas sob muitas circunstâncias, às vezes bebidas

  • O algoritmo de nomeação da function PHP ainda é um segredo e não pode ser quebrado

  • PHP escolheu dar às pessoas algo de diversão para se queixar / blog / risar sobre

  • PHP tem outros problemas para resolver

Historicamente, muitas das funções são mapas diretos para suas contrapartes C , de modo que uma grande quantidade de nomes e argumentos que ordenam a estranheza em PHP é devido a isso.

Os contribuintes para o PHP geralmente contribuíram para o idioma para atender às suas próprias necessidades, de modo que a linguagem cresceu de forma orgânica e, às vezes, disciplinada. Sua popularidade também significou que se esforçou para manter a compatibilidade com versões anteriores ao longo de seu ciclo de vida, o que significa que decisões precárias sobre o idioma continuam mesmo depois de serem obsoletas.

Compatibilidade com versões anteriores e falta de namespaces, juntamente com o churn da linguagem.

Como o idioma cresceu nos últimos 14 anos a partir de “Página Pessoal” para um dos idiomas de implementação de sites mais populares. Ninguém planejou para todas essas funções; eles foram adicionados um de cada vez, conforme necessário.

A resposta é Evolution ou Unintelligent Design. Não tenho certeza qual;)

Para compatibilidade com versões anteriores em muitas rotas de idiomas

Isso parece um pequeno troll-y. No entanto, é para compatibilidade com versões anteriores.

O PHP6 abordará a ajuda para resolver esses problemas, além de oferecer suporte total à UTF-8.

O PHP é uma linguagem de script de código aberto “antiga”, de rápido crescimento. A nomeação é apenas uma questão da longa história … Não há uma empresa “acadêmica” por trás do PHP como SUN atrás do Java, que controla a nomeação …

Inicialmente, o PHP era uma mera linguagem de script sem suporte orientado a objects (PHP 3), de modo que os nomes de funções usados ​​em PHP até a versão 3 e 4 são principalmente inspirados na syntax PERL. Mas o PHP 5 tem muitos resources OO como reflection, tipo de insinuação, interface, modificadores de access e lista continua. A maioria destes novos resources são inspirados da JAVA. Por exemplo; A interface de implementação e a class de inheritance são iguais em PHP e JAVA. Assim, a maioria das novas funções com seus estilos e convenções de nomeação são baseadas em JAVA. Pode-se chamar de evolução de PHP de uma mera linguagem de script para uma linguagem OO bastante robusta.

Eu realmente não vejo como isso importa. A syntax é syntax. Existem muitas línguas humanas, de inglês para um, onde não segue nenhum padrão específico, mas nós o aprendemos de forma independente. É tudo sobre saber sua syntax em vez de adivinhar.

    Intereting Posts