Новое в Symfony 7.2: Улучшения компонента String

Источник: «New in Symfony 7.2: String Component Improvements»
Symfony 7.2 улучшает компонент String, добавляя новый метод kebab-case, новые режимы усечения и испанский инфлектор.

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

Комментарии


Дополнительные материалы

Предыдущая Статья

PHP 8.4: Intl: Новая функция intltz_get_iana_id и метод IntlTimeZone::getIanaID

Следующая Статья

Как использовать Pan для простой аналитики в приложении Laravel