Новое в Symfony 7.2: Улучшения компонента String
Компонент String предоставляет объектно-ориентированный API для работы со строками и байтами, кодовыми точками UTF-8 и кластерами графем в едином ключе. В Symfony 7.2 мы улучшили его, добавив новые возможности.
Добавлен метод kebab()
В компоненте String уже существует несколько методов для изменения регистра переданных строк. Например, camel()
для использования camelCase (Foo bar
-> fooBar
) и snake()
для использования snake_case (Foo Bar
-> foo_bar
). В Symfony 7.2 мы вводим kebab()
для использования kebab-case:
use function Symfony\Component\String\u;
$string = u('symfonyIsGreat')->kebab(); // $string = 'symfony-is-great'
$string = u('Symfony is great')->kebab(); // $string = 'symfony-is-great'
$string = u('Symfony_is_Great')->kebab(); // $string = 'symfony-is-great'
Новые режимы усечения
В компоненте String метод truncate()
работает в двух режимах:
// по умолчанию содержимое обрезается строго в соответствии с желаемой длиной
u('Lorem Ipsum')->truncate(8); // 'Lorem Ip'
// но также можно сохранить последнее слово целиком, даже если это приведёт к созданию более длинной строки
u('Lorem Ipsum')->truncate(8, cut: false); // 'Lorem Ipsum'
В Symfony 7.2 мы добавляем новые режимы с помощью констант TruncateMode::*
:
// По умолчанию используется TruncateMode::Char, обрезающий строку точно по заданной длине
// (это то же самое, что и предыдущее поведение по умолчанию).
u('Lorem ipsum dolor')->truncate(8, cut: TruncateMode::Char); // 'Lorem ip'
// возвращает до последнего полного слова, укладывающегося в заданную длину и не превышающего её
u('Lorem ipsum dolor')->truncate(8, cut: TruncateMode::WordBefore); // 'Lorem'
// возвращает до последнего полного слова, укладывающегося в заданную длину, при необходимости превышая её
// (это то же самое, что и параметр `cut: false` в предыдущем примере)
u('Lorem ipsum dolor')->truncate(8, cut: TruncateMode::WordAfter); // 'Lorem ipsum'
Новый испанский инфлектор
В большинстве человеческих языков существует множество исключений и пограничных правил для преобразования единственного числа во множественное и наоборот. Инфлекторы помогают решить эту проблему, возвращая правильную форму единственного или множественного числа данного слова для целевого языка.
Компонент String уже включает инфлектор для английского и французского языков. В Symfony 7.2 мы добавляем новый инфлектор для испанского языка:
use Symfony\Component\String\Inflector\SpanishInflector;
$inflector = new SpanishInflector();
// Все инфлекторы возвращают массивы, а не строки, потому что иногда невозможно
// определить уникальную форму единственного/ множественного числа для данного слова
$inflector->singularize('aviones'); // returns ['avión']
$inflector->pluralize('miércoles'); // returns ['miércoles']