You are browsing a version that is no longer maintained.

Introduction

The Doctrine Inflector has static methods for inflecting text. The features include pluralization, singularization, converting between camelCase and under_score and capitalizing words.

All you need to use the Inflector is the Doctrine\Common\Inflector\Inflector class.

Installation

You can install the Inflector with composer:

$ composer require doctrine/inflector

Here are the available methods that you can use:

Tableize

Converts ModelName to model_name:

1echo Inflector::tableize('ModelName'); // model_name

Classify

Converts model_name to ModelName:

1echo Inflector::classify('model_name'); // ModelName

Camelize

This method uses Classify and then converts the first character to lowercase:

1echo Inflector::camelize('model_name'); // modelName

ucwords

Takes a string and capitalizes all of the words, like PHP's built-in ucwords function. This extends that behavior, however, by allowing the word delimiters to be configured, rather than only separating on whitespace.

Here is an example:

1$string = 'top-o-the-morning to all_of_you!'; echo Inflector::ucwords($string); // Top-O-The-Morning To All_of_you! echo Inflector::ucwords($string, '-_ '); // Top-O-The-Morning To All_Of_You!
2
3
4
5

Pluralize

Returns a word in plural form.

1echo Inflector::pluralize('browser'); // browsers

Singularize

1echo Inflector::singularize('browsers'); // browser

Rules

Customize the rules for pluralization and singularization:

1Inflector::rules('plural', ['/^(inflect)or$/i' => '\1ables']); Inflector::rules('plural', [ 'rules' => ['/^(inflect)ors$/i' => '\1ables'], 'uninflected' => ['dontinflectme'], 'irregular' => ['red' => 'redlings'] ]);
2
3
4
5
6

The arguments for the rules method are:

  • $type - The type of inflection, either plural or singular
  • $rules - An array of rules to be added.
  • $reset - If true, will unset default inflections for all new rules that are being defined in $rules.

Reset

Clears Inflectors inflected value caches, and resets the inflection rules to the initial values.

1Inflector::reset();

Slugify

You can easily use the Inflector to create a slug from a string of text by using the tableize method and replacing underscores with hyphens:

1public static function slugify(string $text) : string { return str_replace('_', '-', Inflector::tableize($text)); }
2
3
4