Page Contents
- Inflector
This document is for CakePHP's development version, which can be significantly different
from previous releases.
You may want to read
current stable release documentation instead.
La classe Inflector prend une chaîne de caractères et peut la manipuler pour
gérer les variations de mot comme les mises au pluriel ou les mises en Camel et
est normalement accessible statiquement. Exemple:
Inflector::pluralize('example')
retourne « examples ».
Vous pouvez essayer les inflexions en ligne sur inflector.cakephp.org.
Petit résumé des méthodes intégrées à l’Inflector et des résultats produits lorsque vous passez plusieurs mots en argument:
Method |
Argument |
Output |
---|---|---|
|
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 |
|
|
Big Apple |
big-apple |
BigApples |
BigApples |
pluralize
et singularize()
fonctionnent pour la plupart des noms
Anglais. Si vous devez supporter d’autres langues, vous pouvez utiliser la
Configuration d’Inflexion pour personnaliser les règles utilisées:
// Apples
echo Inflector::pluralize('Apple');
Note
pluralize()
peut ne pas toujours convertir correctement un nom qui est
déjà sous sa forme plurielle.
// Person
echo Inflector::singularize('People');
Note
singularize()
peut ne pas toujours convertir correctement un nom qui est
déjà sous sa forme singulière.
Ces méthodes sont utiles lors de la création de noms de classes ou de propriétés:
// ApplePie
Inflector::camelize('Apple_pie')
// apple_pie
Inflector::underscore('ApplePie');
Il doit être noté que les underscores vont seulement convertir les mots formatés en camelCase. Les mots qui contiennent des espaces seront en minuscules, mais ne contiendront pas d’underscore.
Cette méthode est utile pour convertir des formes avec underscore en forme « Title Case » pour être lisible par l’homme:
// Apple Pie
Inflector::humanize('apple_pie');
Quand vous générez du code ou quand vous utilisez les conventions de CakePHP, vous pouvez infléchir les noms de table ou les noms de classe:
// UserProfileSettings
Inflector::classify('user_profile_settings');
// user-profile-setting
Inflector::dasherize('UserProfileSetting');
// user_profile_settings
Inflector::tableize('UserProfileSetting');
Les noms de variable sont souvent utiles quand vous faîtes des tâches meta-programming qui impliquent la génération de code ou des opérations basées sur les conventions:
// applePie
Inflector::variable('apple_pie');
Les conventions de nommage de CakePHP peuvent être très sympas - vous pouvez
nommer votre table de base de données big\_boxes
, votre model BigBoxes
,
votre controller BigBoxesController
, et tout fonctionnera automatiquement.
CakePHP connaît la façon dont les choses sont liées grâce à l”inflexion des
mots entre leurs formes singulière et plurielle.
Il existe des cas (spécialement pour nos amis non-anglais) où l’inflector de CakePHP (la classe qui pluralise, singularise, met en camelCase et en underscore) ne fonctionnera pas comme vous le souhaitez. Si CakePHP ne reconnaîtra pas votre Foci ou Fish, vous pouvez dire à CakePHP vos cas spécifiques.
Définit une nouvelle inflexion et des règles de transliteration que Inflector va utiliser. Souvent, cette méthode est utilisée dans votre 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
Les règles fournies vont être fusionnées dans l’ensemble d’inflexion défini dans
Cake/Utility/Inflector
, avec les règles ajoutées qui supplantent les règles
du coeur. Vous pouvez utiliser Inflector::reset()
pour nettoyer les règles
et restaurer l’état d’Inflector originel.