Nuevo en Symfony 5.1: Nuevos métodos para trabajar con cadenas de texto

El componente String se presentó en Symfony 5.0 como una funcionalidad experimental. En Symfony 5.1 lo hemos mejorado con nuevas funcionalidades.

Uso de la interfaz Stringable

PHP 8 se publicará en diciembre de 2020, pero ya puedes usar algunas de sus funcionalidades gracias al polyfill PHP 8 de Symfony. En Symfony 5.1 usamos ese polyfill para hacer que todos los objetos relacionados con cadenas de texto implementen la interfaz Stringable.

Esto te permitirá usar tipos como string|Stringable en tu código cuando más adelante actualices tu aplicación a PHP 8.

Esta funcionalidad fue contribuida por Nicolas Grekas en el pull request #36059.

Mantener la última palabra al cortar texto

Cuando cortas texto con el método truncate(), es habitual tener que dejar la última palabra entera, aunque eso suponga generar una cadena un poco más larga de los deseado.

Esto es ahora posible gracias a un argumento opcional llamado cut que es true por defecto. Si lo pones a false, la última palabra no se corta:

use function Symfony\Component\String\u;
 
u('Lorem Ipsum')->truncate(8, '…');        // 'Lorem I…'
u('Lorem Ipsum')->truncate(8, '…', false); // 'Lorem Ipsum'

Esta funcionalidad fue contribuida por Fran Moreno en el pull request #35649.

Añadido el método containsAny()

Otra necesidad habitual cuando se trabaja con cadenas de texto es tener que comprobar si una cadena contiene a otra. Por eso hemos añadido el método containsAny(), que no solo comprueba eso sino que también puede comprobar si una cadena contiene al menos una de todas las cadenas que se la pasan:

use function Symfony\Component\String\u;
 
u('aeiou')->containsAny('a');                 // true
u('aeiou')->containsAny(['ab', 'efg']);       // false
u('aeiou')->containsAny(['eio', 'foo', 'z']); // true

Esta funcionalidad fue contribuida por Nicolas Grekas en el pull request #35936.

Añadido el método reverse()

En Symfony 5.1 también hemos añadido el método reverse(), que cambia el orden de los contenidos de la cadena de texto para darle la vuelta:

use function Symfony\Component\String\u;
 
u('foo bar')->reverse(); // 'rab oof'
u('さよなら')->reverse(); // 'らなよさ'

Esta funcionalidad fue contribuida por Thomas Calvet en el pull request #35091.

Otras mejoras

  • El slugger incluido en el componente cambia algunos caracteres para generar mejores slugs. Por ejemplo reemplaza @ por at. En Symfony 5.1 también reemplazará & por and (este cambio fue contribuido por Warxcell en #35689).
  • Hemos añadido un atajo llamado s() para generar rápidamente un objeto de tipo string sin que tengas que pensar si quieres generar un unicode string (cuyo atajo es u()) o un binary string (cuyo atajo es b()) (este cambio fue contribuido por Thomas Calvet en #35625).
  • El método width(), que devuelve la anchura necesaria para mostrar un carácter en la consola, ahora sigue el estándar POSIX.1-2001 (este cambio fue contribuido por Thomas Calvet en #35156).

Fuente: New in Symfony 5.1: String improvements

Comentarios

Publicada el

3 de abril de 2020

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.