Symfony включает внутренний компонент Inflector, в обязанности которого входит преобразование английских слов из множественного числа в единственное. Он используется в компонентах PropertyInfo и PropertyAccess, чтобы найти единственную форму имени свойства:
use Symfony\Component\Inflector\Inflector;
$result = Inflector::singularize('teeth'); // tooth
$result = Inflector::singularize('radii'); // radius
В Symfony 4.3 улучшили компонент несколькими способами. Во-первых, удалили его тег @internal
, поэтому этот компонент больше не считается внутренним, и вы можете сделать так, чтобы ваши проекты зависели от него благодаря обещанию Symfony BC.
Во-вторых, превратили его в полноценный Inflector
благодаря pluralize()
, который возвращает форму множественного числа данного единственного английского слова:
use Symfony\Component\Inflector\Inflector;
$result = Inflector::pluralize('bacterium'); // bacteria
$result = Inflector::pluralize('alumnus'); // alumni
$result = Inflector::pluralize('news'); // news
$result = Inflector::pluralize('GrandChild'); // GrandChildren
Иногда невозможно определить уникальную форму единственного/множественного числа для данного слова. В этих случаях методы возвращают массив со всеми возможными формами:
use Symfony\Component\Inflector\Inflector;
Inflector::singularize('leaves'); // ['leaf', 'leave', 'leaff']
Inflector::pluralize('person'); // ['persons', 'people']