¿Qué podría ser la biblioteca PHP estándar?

Cada artículo que critica PHP, seguido de una explicación de por qué "$" en notación variable estropea la sintaxis, seguramente le dirá qué tan pobre es la denominación de funciones en el núcleo y las extensiones de PHP . Y si "$" permanece en el estándar del lenguaje y en nuestros corazones para siempre (aunque sea solo como un recordatorio del buen PHP antiguo), entonces es hora de hacer algo con el nombre de las funciones.





TLDR;

El autor propone sus propias reglas para nombrar las funciones centrales de PHP y su distribución por espacios de nombres.





Biblioteca PHP estándar

En primer lugar, les contaré un poco sobre la confusión terminológica que introduzco deliberadamente en este artículo.





La biblioteca estándar de PHP (SPL) ya existe como una extensión independiente . SPL proporciona estructuras de datos, excepciones, iteradores y mucho más, pero no tiene nada que ver con funciones básicas, como funciones para trabajar con cadenas . En mi opinión, lejos del dispositivo del intérprete de PHP, simplemente existen en algún lugar del kernel y son, por así decirlo, parte del estándar del lenguaje.





Creo que las funciones básicas deben separarse en una extensión separada y el nombre más apropiado para ella sería la Biblioteca PHP estándar.





Problemas

Existen muchas deficiencias en la denominación de funciones y, en general, en su organización. Las funciones para trabajar con cadenas son un ejemplo de libro de texto , por lo que las consideraré a continuación.





Problemas más notables:





  1. : «‎str_» (str_split), «‎str» (strrev), «‎substr_» (substr_compare), - (trim);





  2. , , strncmp : «‎str1» «‎str2», strnatcasecmp: «‎string1» «‎string2», substr_compare: «‎haystack» «‎needle»;





  3. implode explode;





  4. : strtr, strncmp, strpbrk, strrchr ..;





  5. , , substr_replace ;





  6. false , , strrpos;





  7. : soundex, levenshtein ..





, . , . , , — «‎ ».





, html- . , , , .





, , — . , , , , , PHP , . ? , , .





.
  1. PHP 8.2 — ;





  2. PHP 8.3 — , , , ;





  3. PHP 9 — deprecated, , legacy ,





  4. PHP 10 — end of life legacy .





, 7 8 - 5 , , 10 .





. — .





, , . , , . «‎\», .





- PSR-4. «‎Php», . , «‎Php\Spl».





: PSR-12 .





  1. - , . ,   «‎str_» «‎str», .





  2. lowerCamelCase.





  3. . .





  4. . .





  5. , , .





. sscanf , null. , .





  IDE , .





  1. .





  2. . «‎mixed» .





  3. union- nullable-.





  4. «‎null» , .





  5. .





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, .





Con mi artículo, solo quería provocar un diálogo y plantar las semillas de la duda. Alguien tiene que hacer esto y estoy seguro de que es la comunidad la que debería empujar a los mantenedores a pensar que estos cambios son inevitables.








All Articles