Blame | Letzte Änderung | Log anzeigen | RSS feed
Introduction============The Doctrine Inflector has methods for inflecting text. The features include pluralization,singularization, converting between camelCase and under_score and capitalizingwords.Installation============You can install the Inflector with composer:.. code-block:: console$ composer require doctrine/inflectorUsage=====Using the inflector is easy, you can create a new ``Doctrine\Inflector\Inflector`` instance by usingthe ``Doctrine\Inflector\InflectorFactory`` class:.. code-block:: phpuse Doctrine\Inflector\InflectorFactory;$inflector = InflectorFactory::create()->build();By default it will create an English inflector. If you want to use another language, just pass the languageyou want to create an inflector for to the ``createForLanguage()`` method:.. code-block:: phpuse Doctrine\Inflector\InflectorFactory;use Doctrine\Inflector\Language;$inflector = InflectorFactory::createForLanguage(Language::SPANISH)->build();The supported languages are as follows:- ``Language::ENGLISH``- ``Language::FRENCH``- ``Language::NORWEGIAN_BOKMAL``- ``Language::PORTUGUESE``- ``Language::SPANISH``- ``Language::TURKISH``If you want to manually construct the inflector instead of using a factory, you can do so like this:.. code-block:: phpuse Doctrine\Inflector\CachedWordInflector;use Doctrine\Inflector\RulesetInflector;use Doctrine\Inflector\Rules\English;$inflector = new Inflector(new CachedWordInflector(new RulesetInflector(English\Rules::getSingularRuleset())),new CachedWordInflector(new RulesetInflector(English\Rules::getPluralRuleset())));Adding Languages----------------If you are interested in adding support for your language, take a look at the other languages defined in the``Doctrine\Inflector\Rules`` namespace and the tests located in ``Doctrine\Tests\Inflector\Rules``. You can copyone of the languages and update the rules for your language.Once you have done this, send a pull request to the ``doctrine/inflector`` repository with the additions.Custom Setup============If you want to setup custom singular and plural rules, you can configure these in the factory:.. code-block:: phpuse Doctrine\Inflector\InflectorFactory;use Doctrine\Inflector\Rules\Pattern;use Doctrine\Inflector\Rules\Patterns;use Doctrine\Inflector\Rules\Ruleset;use Doctrine\Inflector\Rules\Substitution;use Doctrine\Inflector\Rules\Substitutions;use Doctrine\Inflector\Rules\Transformation;use Doctrine\Inflector\Rules\Transformations;use Doctrine\Inflector\Rules\Word;$inflector = InflectorFactory::create()->withSingularRules(new Ruleset(new Transformations(new Transformation(new Pattern('/^(bil)er$/i'), '\1'),new Transformation(new Pattern('/^(inflec|contribu)tors$/i'), '\1ta')),new Patterns(new Pattern('singulars')),new Substitutions(new Substitution(new Word('spins'), new Word('spinor')))))->withPluralRules(new Ruleset(new Transformations(new Transformation(new Pattern('^(bil)er$'), '\1'),new Transformation(new Pattern('^(inflec|contribu)tors$'), '\1ta')),new Patterns(new Pattern('noflect'), new Pattern('abtuse')),new Substitutions(new Substitution(new Word('amaze'), new Word('amazable')),new Substitution(new Word('phone'), new Word('phonezes')))))->build();No operation inflector----------------------The ``Doctrine\Inflector\NoopWordInflector`` may be used to configure an inflector that doesn't perform any operation forpluralization and/or singularization. If will simply return the input as output.This is an implementation of the `Null Object design pattern <https://sourcemaking.com/design_patterns/null_object>`_... code-block:: phpuse Doctrine\Inflector\Inflector;use Doctrine\Inflector\NoopWordInflector;$inflector = new Inflector(new NoopWordInflector(), new NoopWordInflector());Tableize========Converts ``ModelName`` to ``model_name``:.. code-block:: phpecho $inflector->tableize('ModelName'); // model_nameClassify========Converts ``model_name`` to ``ModelName``:.. code-block:: phpecho $inflector->classify('model_name'); // ModelNameCamelize========This method uses `Classify`_ and then converts the first character to lowercase:.. code-block:: phpecho $inflector->camelize('model_name'); // modelNameCapitalize==========Takes a string and capitalizes all of the words, like PHP's built-in``ucwords`` function. This extends that behavior, however, by allowing theword delimiters to be configured, rather than only separating onwhitespace.Here is an example:.. code-block:: php$string = 'top-o-the-morning to all_of_you!';echo $inflector->capitalize($string); // Top-O-The-Morning To All_of_you!echo $inflector->capitalize($string, '-_ '); // Top-O-The-Morning To All_Of_You!Pluralize=========Returns a word in plural form... code-block:: phpecho $inflector->pluralize('browser'); // browsersSingularize===========Returns a word in singular form... code-block:: phpecho $inflector->singularize('browsers'); // browserUrlize======Generate a URL friendly string from a string of text:.. code-block:: phpecho $inflector->urlize('My first blog post'); // my-first-blog-postUnaccent========You can unaccent a string of text using the ``unaccent()`` method:.. code-block:: phpecho $inflector->unaccent('año'); // anoLegacy API==========The API present in Inflector 1.x is still available, but will be deprecated in a future release and dropped for 3.0.Support for languages other than English is available in the 2.0 API only.Acknowledgements================The language rules in this library have been adapted from several different sources, including but not limited to:- `Ruby On Rails Inflector <http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html>`_- `ICanBoogie Inflector <https://github.com/ICanBoogie/Inflector>`_- `CakePHP Inflector <https://book.cakephp.org/3.0/en/core-libraries/inflector.html>`_