Tomei a decisão de usar PHP como parte da minha pilha geral, juntamente com rubi, javascript e python. A principal razão é que houve um monte de grande software escrito no PHP, e eu quero usá-lo. No entanto, depois de deixar o mundo PHP para Ruby, e depois voltar para ele, vejo muitas coisas irritantes que me incomodam no PHP. Neste artigo, falei sobre alguns deles.
Mas, é importante notar, PHP não é tão feio quanto digitação. E PHP é uma língua antiga, nascida antes da internet moderna, e projetada para uso leve também conhecido como "páginas". Não para construir monólitos behemoth. Então pelo menos PHP tem essa desculpa para entender a sintaxe errada. Por outro lado, a digitação foi supostamente criada quando a internet moderna já existia. Não há desculpa para a escrita ser tão feia como é. É uma notícia muito triste, pessoal. Receio que haverá uma geração inteira de programadores que pensam que línguas feias são normais. Fim mini-rante.
E agora as coisas que eu não gosto sobre PHP.
loops feios
Se eu escrever:
foreach ($collection as $block => $region) { ... }Observe o símbolo '=>'. Você normalmente vê-lo no dicionário atribuição de valor-chave, mas aqui significa o oposto, descructure em vez de atribuição. Faz sentido usar a mesma coisa? Acho que não.
Também observe que ao ler a linha acima, você tem que ler o meio dela, em seguida, voltar a ler o início. Não lê: para cada um ($bloco => $região em $coleção) {...} . Se eu ler a primeira metade e parar, a informação é sem sentido: para cada um ($colection... Talvez as pessoas php estão acostumados a esta abominação, mas eu não sou, e eu estou apontando para fora que é sintaxe ruim.
Compare isso com a píton:
for key, value in my_dict.items(): print(key, value)Compare isso com o rubi:
collection.map { |key, value| print(key, value) }Elegante, não é? Elegante em cada idioma diferente do php.
Separador de espaços de nomes atricioso
O que isso significa?!
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\Entity\EntityFormDisplay;O corte ao contrário é... apenas uma personagem normal, sozinha. Isso é estúpido, eu vi isso e voltei a não usar php durante um ano. No mundo real, em linux, o corte ao contrário escapa ao próximo personagem. O corte ao contrário nunca está sozinho, e o personagem a seguir também é um personagem especial! Você pode escapar de personagens especiais como novas linhas e sinais de dólares, você pode escapar de coisas que não existem, você pode escapar de metade de uma coisa que ainda não existe - e será à prova de futuro e portátil. Eu estou falando sobre unicode: você pode escrever \uXXXX e codificar uma porção de um caráter multi-byte que não foi adicionado a um charset, todos usando o tremendo poder do retrocesso.
De certa forma, o backslash é um personagem meta-meta, é mais especial do que um backtick ou um sinal de dólar, é indiscutivelmente o personagem mais especial de todos. E o PHP usa-o para quê? Por nada, só para separar as coisas. Separar coisas com uma vírgula.
Na verdade, no mundo real do linux, a barra ao contrário escaparia do próximo personagem, e por exemplo `Drupal\Core` se tornaria apenas `DrupalCore', uma vez que escapar `C' é um no-op e resulta no mesmo `C'.
Compare isso com o rubi:
class Very::Simple::Namespace {}comparar com python:
from utils.text.unicode import encodeNovamente, o único feio é php.
Stupefying array sintaxe
O que é isso?!
$person = [
'name' => 'Alice',
'age' => 30,
'city' => 'Austin',
];Suportes quadrados? Mas não é uma lista. Todos no mundo, além desses caras, usam `[]` para representar listas e `{}` para representar conjuntos/dicionários/hashes. Não me faças começar...
Comparar com rubi:
person = {
name: 'Alice',
}
person = {
'name' => 'Alice',
}comparar com python:
person = {
"name": "Alice",
"age": 30,
"city": "Austin",
}Novamente, PHP é o feio fora.
Atualizo a lista assim que vir ou me lembrar de outras coisas irritantes. Mas por enquanto - espero que você possa ver como as pessoas têm fortes preferências de linguagem. E isso era apenas sintaxe simples, não reflexão, não biblioteca padrão ou outras considerações. Eu acho que o rubi é uma linguagem infinitamente mais elegante e prazerosa, e é perturbador que o rubi não esteja recebendo uso suficiente dos programadores do mundo.