Page Contents
- 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 |
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');
Note
pluralize()
pode não funcionar corretamente nos casos onde um substantivo já
esteja em sua forma plural.
// Person
echo Inflector::singularize('People');
Note
singularize()
pode não funcionar corretamente nos casos onde um substantivo já
esteja em sua forma singular.
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.
Este método é útil para converter da forma sublinhada para o «Formato Título» para a leitura humana:
// Apple Pie
Inflector::humanize('apple_pie');
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');
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');
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');
Note
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.
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.