Blame view

public/vendor/doctrine/inflector/docs/en/index.rst 6.37 KB
86143e36f   Андрей Ларионов   Коммит вторник
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
  Introduction
  ============
  
  The Doctrine Inflector has methods for inflecting text. The features include pluralization,
  singularization, converting between camelCase and under_score and capitalizing
  words.
  
  Installation
  ============
  
  You can install the Inflector with composer:
  
  .. code-block:: console
  
      $ composer require doctrine/inflector
  
  Usage
  =====
  
  Using the inflector is easy, you can create a new ``Doctrine\Inflector\Inflector`` instance by using
  the ``Doctrine\Inflector\InflectorFactory`` class:
  
  .. code-block:: php
  
      use 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 language
  you want to create an inflector for to the ``createForLanguage()`` method:
  
  .. code-block:: php
  
      use 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:: php
  
      use 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 copy
  one 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:: php
  
      use 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 for
  pluralization 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:: php
  
      use Doctrine\Inflector\Inflector;
      use Doctrine\Inflector\NoopWordInflector;
  
      $inflector = new Inflector(new NoopWordInflector(), new NoopWordInflector());
  
  Tableize
  ========
  
  Converts ``ModelName`` to ``model_name``:
  
  .. code-block:: php
  
      echo $inflector->tableize('ModelName'); // model_name
  
  Classify
  ========
  
  Converts ``model_name`` to ``ModelName``:
  
  .. code-block:: php
  
      echo $inflector->classify('model_name'); // ModelName
  
  Camelize
  ========
  
  This method uses `Classify`_ and then converts the first character to lowercase:
  
  .. code-block:: php
  
      echo $inflector->camelize('model_name'); // modelName
  
  Capitalize
  ==========
  
  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:
  
  .. 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:: php
  
      echo $inflector->pluralize('browser'); // browsers
  
  Singularize
  ===========
  
  Returns a word in singular form.
  
  .. code-block:: php
  
      echo $inflector->singularize('browsers'); // browser
  
  Urlize
  ======
  
  Generate a URL friendly string from a string of text:
  
  .. code-block:: php
  
      echo $inflector->urlize('My first blog post'); // my-first-blog-post
  
  Unaccent
  ========
  
  You can unaccent a string of text using the ``unaccent()`` method:
  
  .. code-block:: php
  
      echo $inflector->unaccent('año'); // ano
  
  Legacy 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>`_