chippyash/logic-matrix

PHP 逻辑矩阵包

3.1.0 2018-07-04 22:43 UTC

This package is auto-updated.

Last update: 2024-09-22 23:25:17 UTC


README

质量保证

PHP 5.6 PHP 7 Build Status Test Coverage Code Climate

请参阅 测试合约

请注意,自库的 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);

更改库

  1. 创建分支
  2. 编写测试
  3. 修改
  4. 发起拉取请求

发现了一个您无法解决的错误吗?

  1. 创建分支
  2. 编写测试
  3. 发起拉取请求

注意。在发起拉取请求之前,请确保您已将代码重置到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条款