Новое в Symfony 5.1: Улучшения компонента строк

Компонент String был представлен в Symfony 5.0 в качестве экспериментальной функции. В Symfony 5.1 он больше не будет экспериментальным, и его улучшили с помощью новых функций.

Использовать Stringable интерфейс

PHP 8 будет опубликован в Декабре 2020 года, но вы уже можете использовать некоторые его функции в своих приложениях PHP благодаря Symfony PHP 8 Polyfill. В Symfony 5.1 используем этот polyfill, чтобы все строковые объекты реализовали интерфейс Stringable.

Это позволит вам использовать типы объединения, такие как string|Stringable, в будущем при последующем обновлении до PHP 8.

Сохраняйте последнее слово при усечении

При усечении текста с помощью метода truncate() обычно последнее слово остается неизменным, даже если это означает создание строки, которая немного длиннее, чем первоначально требовалось.

Теперь это возможно благодаря новому необязательному аргументу cut, который по умолчанию имеет значение true. Установите значение false, чтобы последнее слово не изменилось:

use function Symfony\Component\String\u;

u('Lorem Ipsum')->truncate(8, '…');        // 'Lorem I…'
u('Lorem Ipsum')->truncate(8, '…', false); // 'Lorem Ipsum'

Добавлен метод containsAny()

При работе со строками обычно необходимо проверить, содержит ли данная строка какую-либо другую строку. Вот почему мы добавили новый метод containsAny(), который не только проверяет, содержит ли строка другую, но также может проверять, содержит ли она хотя бы одну из всех указанных строк:

use function Symfony\Component\String\u;

u('aeiou')->containsAny('a');                 // true
u('aeiou')->containsAny(['ab', 'efg']);       // false
u('aeiou')->containsAny(['eio', 'foo', 'z']); // true

Добавлен метод reverse()

Другой метод, добавленный в Symfony 5.1, является reverse(), который переворачивает порядок содержимого строки:

use function Symfony\Component\String\u;

u('foo bar')->reverse(); // 'rab oof'
u('さよなら')->reverse(); // 'らなよさ'

Другие улучшения

  • Слаггер изменяет некоторые специальные символы, чтобы генерировать лучших слагов. Например, он заменяет @ на at. В Symfony 5.1 он также заменит & на and (это было сделано Warxcell в #35689)
  • Добавили новый помощник s() для быстрого создания строковых объектов без необходимости думать, нужно ли вам u() (строка Unicode) или b() (двоичная строка) (это было сделано Томасом Кальветом в #35625)
  • Метод width(), который возвращает ширину, необходимую для отображения символа в консоли, теперь следует стандарту POSIX.1-2001 (это было сделано Томасом Кальветом в #35156)