travy / cake_behaviors
CakePHP的行为模型
Requires
- php: >=5.4
- cakephp/cakephp: 3.*
- marc-mabe/php-enum: 1.*
Requires (Dev)
- phpunit/phpunit: ~4.8
Suggests
- cakephp/cakephp-codesniffer: Allows to check the code against the coding standards used in CakePHP.
- phpunit/phpunit: Allows automated tests to be run without system-wide install.
This package is not auto-updated.
Last update: 2016-12-30 12:11:31 UTC
README
为应用程序提供有用的 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构建的。有关更多可枚举方法或要将枚举添加到您的项目中,请参阅那里的文档。