chippyash / logic-matrix
PHP 逻辑矩阵包
Requires
- php: >=5.6
- chippyash/matrix: >=3,<4
Requires (Dev)
- phpunit/phpunit: ~4.8
README
质量保证
请参阅 测试合约
请注意,自库的 3.0.0 版本以来,已取消对 PHP5.4 和 5.5 的开发者支持。如果您需要支持 PHP 5.4 或 5.5,请使用版本 >=2,<3
是什么?
这个库旨在提供逻辑矩阵功能,并在 chippyash/Matrix 矩阵数据结构库的基础上构建。
- 所有内容都有测试用例
- PHP 5.4+
何时
当前库涵盖了基本的逻辑矩阵操作。
如果您想要更多,可以提出建议,或者更好的是,分支并提交一个拉取请求。
查看 chippyash/Matrix 以支持矩阵数据类型。
查看 chippyash/Math-Matrix 以支持数学矩阵操作。
查看 ZF4 包 以获取更多包。
支持的运算
- AndMatrix - 返回两个矩阵 AND 的结果
- AndOperand - 返回与布尔运算符 AND 的矩阵
- Not - 返回 !matrix
- OrMatrix - 返回两个矩阵 OR 的结果
- OrOperand - 返回与布尔运算符 OR 的矩阵
- XorMatrix - 返回两个矩阵 XOR 的结果
- XorOperand - 返回与布尔运算符 XOR 的矩阵
该库根据 GNU GPL V3 或更高许可协议 发布。
如何
请参阅 chippyash/Matrix 了解底层功能。您可以执行与矩阵一样多的操作。
编码基础
逻辑矩阵是一个所有条目都是布尔值的矩阵;真或假
单个项矩阵的快捷方式是提供一个单个数组
use chippyash\Logic\Matrix\LogicalMatrix; $mA = new LogicalMatrix([]); //empty matrix $mA = new LogicalMatrix([[]]); //empty matrix $mA = new LogicalMatrix([true]); //single item matrix $mA = new LogicalMatrix([2, false]); //1x2 matrix $mA = new LogicalMatrix([2, false],[true, 'foo']); //2x2 matrix
注意。矩阵构造值将转换为它们的布尔等效值,所以 '' = false,'foo' = true,1 = true,0 = false 等,根据正常的 PHP 布尔类型转换规则。
与任何 TDD 应用程序一样,测试用例告诉您有关 SUT 所需了解的一切。请阅读它们!但是,对于脾气暴躁的人,要点如下
提供了逻辑矩阵类型
- LogicalMatrix(array $source, bool $normalizeDefault = false)
逻辑矩阵具有比矩阵更多的属性
- 属性总是返回布尔值。
- 您可以使用 Matrix 的 is() 方法来测试属性
- 属性实现了 chippyash\Matrix\Interfaces\AttributeInterface
//assuming $mA is a LogicalMatrix - this will return true if ($mA->is('Logical')) {} //is the same as, which can also be used on ordinary matrices $attr = new Logic\Matrix\Attribute\IsLogical(); if ($attr($mA) {}
逻辑矩阵具有操作
- 操作总是返回逻辑矩阵
- 原始矩阵保持不变
- 您可以使用魔法 __invoke 功能
- 操作实现了 chippyash\Logical\Matrix\Interfaces\OperationInterface
$mC = $mA("AndMatrix", $mB); //same as : $op = new Logic\Matrix\Operation\AndMatrix; $mC = $op($mA, $mB);
以下操作是可用的
- AndMatrix - AND 两个矩阵
- AndOperand - 与布尔 AND 矩阵
- Not - NOT 矩阵
- OrMatrix - OR 两个矩阵
- OrOperand - 与布尔 OR 矩阵
- 异或矩阵 - 对矩阵执行异或操作
- 异或操作符 - 将矩阵与布尔值进行异或操作
魔幻调用方法允许您以函数式方式编写
$fAnd = new AndMatrix(); $fOr = new OrOperand(); //($mA && $mB) || true return $fOr($fAnd($mA, $mB), true);
更改库
- 创建分支
- 编写测试
- 修改
- 发起拉取请求
发现了一个您无法解决的错误吗?
- 创建分支
- 编写测试
- 发起拉取请求
注意。在发起拉取请求之前,请确保您已将代码重置到HEAD
在哪里?
该库托管在GitHub。您可以在Packagist.org找到它
安装
安装Composer
对于生产环境
将以下内容添加到您的composer.json "requires"部分:
"chippyash/logical-matrix": "~2.0"
对于开发
克隆此仓库,然后在本地仓库根目录下运行Composer以拉取依赖项
运行测试
git clone git@github.com:chippyash/Logical-matrix.git LogicMatrix cd LogicMatrix composer update
许可
cd LogicMatrix vendor/bin/phpunit -c test/phpunit.xml test/
此软件库是根据BSD 3条款许可发布的
版权
本软件库版权所有(c)2014-2018,Ashley Kitson,英国
历史
V0... 预发布版
V1.0.0 原始发布
V1.0.5 更新底层库依赖项
V1.0.6 更新phpunit版本
V2.0.0 BC Break: 将命名空间从chippyash更改为Chippyash
V2.0.1 添加链接到包
V2.0.2 验证PHP7兼容性
V2.0.3 更新构建脚本
V3.0.0 BC Break. 撤销对旧PHP版本的支持
V3.1.0 许可证从GPL V3更改为BSD 3条款