Inflector

class Cake\Utility\Inflector

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.

Résumé des Méthodes d’Inflector et de leurs Sorties

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
pluralize() BigApple BigApples
big_apple big_apples
singularize() BigApples BigApple
big_apples big_apple
camelize() big_apples BigApples
big apple BigApple
underscore() BigApples big_apples
Big Apples big apples
humanize() big_apples Big Apples
bigApple BigApple
classify() big_apples BigApple
big apple BigApple
dasherize() BigApples big-apples
big apple big apple
tableize() BigApple big_apples
Big Apple big apples
variable() big_apple bigApple
big apples bigApples
slug() Big Apple big-apple
BigApples BigApples

Créer des Formes Pluriel et Singulier

static Cake\Utility\Inflector::singularize($singular)
static Cake\Utility\Inflector::pluralize($singular)

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.

Créer des Formes en CamelCase et en Underscore

static Cake\Utility\Inflector::camelize($underscored)
static Cake\Utility\Inflector::underscore($camelCase)

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.

Créer des Formes Lisibles par l’Homme

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');

Créer des Formes pour les Tables et les Noms de Classe

static Cake\Utility\Inflector::classify($underscored)
static Cake\Utility\Inflector::dasherize($dashed)
static Cake\Utility\Inflector::tableize($camelCase)

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');

Créer des Noms de Variable

static Cake\Utility\Inflector::variable($underscored)

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');

Créer des Chaînes d’URL Safe

static Cake\Utility\Inflector::slug($word, $replacement = '-')

Slug convertit les caractères spéciaux en version latins et convertit les caractères ne correspondant pas et les espaces en tirets. La méthode slug s’attend à un encodage UTF-8:

// apple-puree
Inflector::slug('apple purée');

Note

Inflector::slug() est dépréciée depuis la version 3.2.7. Utilisez Text::slug() à la place.

Configuration d’Inflexion

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.

Charger les Inflexions Personnalisées

static Cake\Utility\Inflector::rules($type, $rules, $reset = false)

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.