Компонент Symfony Inflector преобразует слова между их формами единственного и множественного числа (пока только на английском языке). Он используется в нескольких частях Symfony для генерации уникальных имен свойств из множественных имен методов и наоборот ($foo
<-> setFoos()
, $foos
<-> addFoo()
).
В Symfony 5.1 пометили этот компонент как устаревший и перенесли его логику в компонент String, который обеспечивает лучший опыт работы со строками в приложениях PHP.
Новый инфлектор доступен через класс EnglishInflector
(который отражает намерение расширить инфлектор на другие языки в будущем). Интерфейс остается прежним:
namespace Symfony\Component\String\Inflector;
interface InflectorInterface
{
// the returned values are arrays because in some cases, there
// are multiple valid singulars/plurals for a given word
public function singularize(string $plural): array;
public function pluralize(string $singular): array;
}
Вот как вы можете использовать его в своих приложениях:
use Symfony\Component\String\Inflector\EnglishInflector;
$inflector = new EnglishInflector();
$result = $inflector->singularize('teeth'); // ['tooth']
$result = $inflector->singularize('radii'); // ['radius']
$result = $inflector->singularize('leaves'); // ['leaf', 'leave', 'leaff']
$result = $inflector->pluralize('bacterium'); // ['bacteria']
$result = $inflector->pluralize('news'); // ['news']
$result = $inflector->pluralize('person'); // ['persons', 'people']