Cada artigo criticando o PHP, seguido por uma explicação de por que o "$" na notação de variável bagunça a sintaxe, certamente contará a você como a nomenclatura de funções é ruim no núcleo e nas extensões do PHP . E se "$" permanecer no padrão da linguagem e em nossos corações para sempre (mesmo que apenas como um lembrete do bom e velho PHP), então é hora de fazer algo com a nomenclatura de funções.
TLDR;
O autor propõe suas próprias regras para nomear funções centrais do PHP e sua distribuição por namespaces.
Biblioteca PHP padrão
Em primeiro lugar, vou falar um pouco sobre a confusão terminológica que introduzo deliberadamente neste artigo.
A Standard PHP Library (SPL) já existe como uma extensão independente . O SPL fornece estruturas de dados, exceções, iteradores e muito mais, mas não tem nada a ver com funções básicas, como funções para trabalhar com strings . Eles, na minha opinião, longe do dispositivo do interpretador PHP, simplesmente existem em algum lugar no kernel e são, por assim dizer, parte do padrão da linguagem.
Eu acredito que as funções básicas devem ser separadas em uma extensão separada e o nome mais apropriado para isso seria a Biblioteca PHP padrão.
Problemas
Existem muitas lacunas na nomenclatura das funções e, em geral, na sua organização. As funções para trabalhar com strings são um exemplo de livro didático , portanto, irei considerá-las a seguir.
Problemas mais notáveis:
: «str_» (str_split), «str» (strrev), «substr_» (substr_compare), - (trim);
, , strncmp : «str1» «str2», strnatcasecmp: «string1» «string2», substr_compare: «haystack» «needle»;
-
: strtr, strncmp, strpbrk, strrchr ..;
, , substr_replace ;
false , , strrpos;
: soundex, levenshtein ..
, . , . , , — « ».
, html- . , , , .
, , — . , , , , , PHP , . ? , , .
.
PHP 8.2 — ;
PHP 8.3 — , , , ;
PHP 9 — deprecated, , legacy ,
PHP 10 — end of life legacy .
, 7 8 - 5 , , 10 .
, , . , , . «\», .
- PSR-4. «Php», . , «Php\Spl».
: PSR-12 .
- , . , «str_» «str», .
lowerCamelCase.
. .
. .
, , .
. sscanf , null. , .
IDE , .
.
. «mixed» .
union- nullable-.
«null» , .
.
proof of concept , , , — https://github.com/marvin255/php-spl-proposal/blob/master/src/StringUtilities.php.
— .
. , , : , IDE , cms.
.
strnatcmp(“test1”, “test2”);
//
StringUtilities::compareUsingNaturalOrder(“test1”, “test2”);
str_contains(”test”, “t”);
//
StringUtilities::contains(”test”, “t”);
, , , . , , — .
, json , , . , , — . .
- . , , PHP.
. , , PHP 7 8, .
Com o meu artigo, queria apenas provocar um diálogo e plantar as sementes da dúvida. Alguém tem que fazer isso, e tenho certeza que é a comunidade que deve levar os mantenedores a pensar que essas mudanças são inevitáveis.