travy/cake_behaviors

此包已被弃用,不再维护。未建议替代包。

CakePHP的行为模型

安装: 306

依赖项: 0

建议者: 0

安全: 0

星级: 0

关注者: 1

分支: 0

开放问题: 1

类型:cakephp-plugin

1.0.0 2016-05-30 07:04 UTC

This package is not auto-updated.

Last update: 2016-12-30 12:11:31 UTC


README

Build Status Software License

为应用程序提供有用的 CakePHP 3 模型行为。不支持 3.x 之前的 CakePHP 版本。

安装

1) 将 cake_behaviors 添加到您的 composer.json 文件中

composer self-update && composer require 'travy/cake_behaviors:dev-master'

2) 通过修改 CakePHP 3 项目中的 config/bootstrap.php 文件并添加以下行来加载插件

Plugin::load('CakeBehaviors');

3) 通过在所需的表类初始化方法中指定 CakeBehaviors.<<behaviorName>> 来添加任何所需的到您的表

public function initialize(array $config)
{
...

$this->addBehavior('CakeBehaviors.Addressable');

...
}

提供的行为

目前 cake_behaviors 只支持一个行为,但更多正在开发中。实现的行为是 AddressableBehavior,但其他提到的行为也在开发中,并应该很快得到支持。

AddressableBehavior

AddressableBehavior 假设表有 address、city、state 和 zipcode 字段。字段有一个规则,即所有字段都可以设置为空或非空,但不能同时为空和非空。换句话说,您不能在 address 字段有 "101 Wicks Road" 的值的同时,city、state 和 zipcode 是空字符串或 null。插入/更新操作将被中止。

该行为还处理输入验证,强制 address 和 city 必须是长度为 2 到 255 个字符的字符串。假定邮编是长度为 5 到 10 个字符的字符串,而州将只包含 2 个字符。州的值也将经过验证以确保它是一个有效的 2 个字符的大写字符串。可以使用 CakeBehaviors\Utils\Enums\StatesEnumeration 类获取州的值。

SoftDeletableBehavior <未实现>

SoftDeletableBehavior 类将提供一种机制来避免在数据库中进行真正的删除。使用此行为的每个表都应有一个 active 字段,它将是一个包含 "Y" 或 "N" 的单字符字符串。

将提供查找方法来帮助查询仅标记为活动的实体。

此行为自 2016 年 5 月 30 日起不再支持,但我希望很快实现它。

HistoricalBehavior <未实现>

HistoricalBehavior 允许用户跟踪对数据库中特定表字段的更改。该行为将帮助跟踪用户定义的所有 CRUD 操作或子集。目前没有更多相关信息。

此行为自 2016 年 5 月 30 日起不再支持,但我希望很快实现它。

实用类

以下实用类最初是为行为类创建的,但它们也适合独立使用。

StatesEnumeration

状态枚举对象提供了一种验证美国州代码的机制。这是一个静态类,其中每个州都通过其全称作为完全大写的常量进行引用。

echo StatesEnumeration::NEW_YORK; //  > 'NY'
echo StatesEnumeration::CALIFORNIA; //  > 'CA'

除了列出的状态列表外,还可以创建一个数组,该数组以用户友好的全名作为键,值仍然设置为缩写结果。

var_dump(StatesEnumeration::getStatesArray(); //  ['Alabama' => 'AL', 'Alaska' => 'AK', ..., 'New York' => 'NY', ...];

可以通过使用get($name)、getByName($name)和getByOrdinal($ordinal)函数来检查值是否为有效状态。

StatesEnumeration是使用此处GitHub上的包marc-mabe/php-enum构建的。有关更多可枚举方法或要将枚举添加到您的项目中,请参阅那里的文档。