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.

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.