Inflector

class Cake\Utility\Inflector

A classe Inflector recebe uma string e a manipula afim de suportar variações de palavas como pluralizações ou CamelCase e normalmente é acessada estaticamente. Exemplo: Inflector::pluralize('example') retorna “examples”.

Você pode testar as inflexões em inflector.cakephp.org.

Resumo dos métodos de Inflexão e Suas Saídas

Resumo rápido dos métodos embutidos no Inflector e os resultados que produzem quando fornecidos um argumento de palavra composta.

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

Criando as formas singulares e plurais

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

Tanto pluralize() quanto singularize() funcionam para a maioria dos substantivos do Inglês. Caso seja necessário o suporte para outras línguas, você pode usar Configuração da inflexão para personalizar as regras usadas:

// Apples
echo Inflector::pluralize('Apple');

Nota

pluralize() pode não funcionar corretamente nos casos onde um substantivo já esteja em sua forma plural.

// Person
echo Inflector::singularize('People');

Nota

singularize() pode não funcionar corretamente nos casos onde um substantivo já esteja em sua forma singular.

Criando as formas CamelCase e nome_sublinhado

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

Estes métodos são úteis para a criação de nomes de classe ou de propriedades:

// ApplePie
Inflector::camelize('Apple_pie')

// apple_pie
Inflector::underscore('ApplePie');

É importante ressaltar que underscore() irá converter apenas palavras formatadas em CamelCase. Palavras com espaços serão convertidas para caixa baixa, mas não serão separadas por sublinhado.

Criando formas legíveis para humanos

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

Este método é útil para converter da forma sublinhada para o “Formato Título” para a leitura humana:

// Apple Pie
Inflector::humanize('apple_pie');

Criando formatos para nomes de tabelas e classes

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

Ao gerar o código ou usar as convenções do CakePHP, você pode precisar inferir os nomes das tabelas ou classes:

// UserProfileSettings
Inflector::classify('user_profile_settings');

// user-profile-setting
Inflector::dasherize('UserProfileSetting');

// user_profile_settings
Inflector::tableize('UserProfileSetting');

Criando nomes de variáveis

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

Nomes de variáveis geralmente são úteis em tarefas de meta-programação que involvem a geração de código ou rotinas baseadas em convenções:

// applePie
Inflector::variable('apple_pie');

Criando strings de URL seguras

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

slug() converte caracteres especiais em suas versões normais e converte os caracteres não encontrados e espaços em traços. O método slug() espera que a codificação seja UTF-8:

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

Nota

Inflector::slug() foi depreciado desde a versão 3.2.7. Procure usar Text::slug() de agora em diante.

Configuração da inflexão

As convenções de nomes do CakePHP podem ser bem confortáveis. Você pode nomear sua tabela no banco de dados como big_boxes, seu modelo como BigBoxes, seu controlador como BigBoxesController e tudo funcionará automaticamente. O CakePHP entrelaça todos estes conceitos através da inflexão das palavras em suas formas singulares e plurais.

Porém ocasionalmente (especialmente para os nossos amigos não Anglófonos) podem encontrar situações onde o infletor do CakePHP (a classe que pluraliza, singulariza, transforma em CamelCase e em nome_sublinhado) não funciona como você gostaria. Caso o CakePHP não reconheça seu “quaisquer” ou “lápis”, você pode ensiná-lo a entender seus casos especiais.

Carregando inflexões personalizadas

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

Define novas inflexões e transliterações para o Inflector usar. Geralmente este método deve ser chamado no seu 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

As regras ditadas por este método serão agregadas aos conjuntos de inflexão definidos em Cake/Utility/Inflector, onde elas terão prioridade sobre as regras já declaradas por padrão. Você pode usar Inflector::reset() para limpar todas as regras e retornar o Inflector para seu estado original.