La clase Inflector toma una cadena y puede manipularla para manejar variaciones de palabras como pluralización o conversión a formato camello (camelCase). Por lo general, se accede a esta clase de manera estática. Por ejemplo:
Inflector::pluralize('example')
devuelve «examples».
Puedes probar las inflecciones en línea en inflector.cakephp.org or sandbox.dereuromark.de.
Los métodos integrados en el Inflector y los resultados que generan al proporcionarles un argumento compuesto por varias palabras:
Método |
Argumento |
Resultado |
---|---|---|
|
BigApple |
BigApples |
big_apple |
big_apples |
|
|
BigApples |
BigApple |
big_apples |
big_apple |
|
|
big_apples |
BigApples |
big apple |
BigApple |
|
|
BigApples |
big_apples |
Big Apples |
big apples |
|
|
big_apples |
Big Apples |
bigApple |
BigApple |
|
|
big_apples |
BigApple |
big apple |
BigApple |
|
|
BigApples |
big-apples |
big apple |
big apple |
|
|
BigApple |
big_apples |
Big Apple |
big apples |
|
|
big_apple |
bigApple |
big apples |
bigApples |
Both pluralize
and singularize()
work on most English nouns. If you need
to support other languages, you can use Configurando las Inflecciones to
customize the rules used:
// Apples
echo Inflector::pluralize('Apple');
Nota
pluralize()
no debería ser usado en un nombre que ya está en su forma plural.
// Person
echo Inflector::singularize('People');
Nota
singularize()
no debería ser usado en un nombre que ya está en su forma singular.
Estos métodos son útiles cuando creas nombres de clases o de propiedades:
// ApplePie
Inflector::camelize('Apple_pie')
// apple_pie
Inflector::underscore('ApplePie');
Nótese que el método underscore sólo convertirá palabras en formato CamelCase. Palabras que contengan espacios serán transformadas a minúscula pero no contendrán un guión bajo.
Este método es útil cuando se quiere convertir una palabra de la forma under_scored al formato «Título» para que sea legible por un ser humano:
// Apple Pie
Inflector::humanize('apple_pie');
Cuando se genera código, o usando las convenciones de CakePHP, puedes necesitar generar inflecciones para los nombres de tabla o de clase:
// UserProfileSetting
Inflector::classify('user_profile_settings');
// user-profile-setting
Inflector::dasherize('UserProfileSetting');
// user_profile_settings
Inflector::tableize('UserProfileSetting');
Los nombres de variable son a menudo útiles cuando se hacen tareas de meta-programación que involucran generar código o hacer trabajo basado en convenciones:
// applePie
Inflector::variable('apple_pie');
Las convenciones de nomenclatura de CakePHP pueden ser muy útiles: puedes nombrar tu
tabla de base de datos como big_boxes
, tu modelo como BigBoxes
, tu controlador
como BigBoxesController
, y todo funcionará automáticamente juntos. La forma en que
CakePHP sabe cómo vincular las cosas es inflectando las palabras entre sus formas
singular y plural.
Existen ocasiones (especialmente para nuestros amigos que no hablan inglés) en las que podrías encontrarte con situaciones donde el inflector de CakePHP (la clase que pluraliza, singulariza, utiliza notación camello y subrayados) puede no funcionar como deseas. Si CakePHP no reconoce tus «Foci» o «Fish», puedes indicarle a CakePHP acerca de tus casos especiales.
Define nuevas reglas de inflexión y transliteración para que Inflector las utilice. A menudo, este método se utiliza en tu archivo config/bootstrap.php:
Inflector::rules('singular', ['/^(bil)er$/i' => '\1', '/^(inflec|contribu)tors$/i' => '\1ta']);
Inflector::rules('uninflected', ['singulars']);
Inflector::rules('irregular', ['phylum' => 'phyla']); // The key is singular form, value is plural form
Las reglas suministradas se fusionarán en los conjuntos de inflexión respectivos definidos en Cake/Utility/Inflector
,
y las reglas añadidas tendrán prioridad sobre las reglas principales del núcleo. Puedes usar Inflector::reset()
para eliminar las reglas y restaurar el estado original del Inflector.