Компонент 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)