Page Contents
- Inflector
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 rápido dos métodos embutidos no Inflector e os resultados que produzem quando fornecidos um argumento de palavra composta.
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 |
Cake\Utility\Inflector::
singularize
($singular)¶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.
Cake\Utility\Inflector::
camelize
($underscored)¶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.
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');
Cake\Utility\Inflector::
classify
($underscored)¶Cake\Utility\Inflector::
dasherize
($dashed)¶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');
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');
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.
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.
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.