Inflector

class Cake\Utility\Inflector

Inflector 类接收一个字符串并对其进行操作以处理单词变体,例如复数化或驼峰化,通常以静态方式访问。例如:Inflector::pluralize('example') 返回“examples”。

您可以在 inflector.cakephp.orgsandbox.dereuromark.de 上在线试用这些变体。

Inflector 方法及其输出摘要

Inflector 内置方法及其在提供多词参数时的输出结果的快速摘要

方法

参数

输出

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

创建复数和单数形式

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

pluralizesingularize() 都适用于大多数英语名词。如果您需要支持其他语言,可以使用 Inflection 配置 自定义使用的规则

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

注意

pluralize() 不应用于已经处于复数形式的名词。

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

注意

singularize() 不应用于已经处于单数形式的名词。

创建 CamelCase 和下划线形式

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

这些方法在创建类名或属性名时很有用

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

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

需要注意的是,underscore 将只转换驼峰格式的单词。包含空格的单词将被小写,但不会包含下划线。

创建人类可读形式

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

此方法在将下划线形式转换为“标题大小写”形式以供人类可读值时很有用

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

创建表和类名称形式

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

在生成代码或使用 CakePHP 的约定时,您可能需要对表名或类名进行变体处理

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

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

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

创建变量名称

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

变量名称在进行涉及生成代码或根据约定执行工作的元编程任务时通常很有用

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

Inflection 配置

CakePHP 的命名约定非常好 - 您可以将数据库表命名为 big_boxes,模型命名为 BigBoxes,控制器命名为 BigBoxesController,所有这些都会自动协同工作。CakePHP 知道如何将这些东西联系在一起是通过 *变体处理* 单词之间的单数和复数形式。

在某些情况下(尤其是对于非英语使用者),您可能会遇到 CakePHP 的 Inflector(负责复数化、单数化、驼峰化和下划线的类)无法按您预期的方式工作的情况。如果 CakePHP 无法识别您的 Foci 或 Fish,您可以告诉 CakePHP 关于您的特殊情况。

加载自定义 Inflections

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

为 Inflector 定义新的变体处理和音译规则。通常,此方法在您的 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

提供的规则将与 Cake/Utility/Inflector 中定义的各自变体处理集中合并,新增规则优先于核心规则。您可以使用 Inflector::reset() 来清除规则并恢复原始 Inflector 状态。