world-warm-worm/array-state-observer

计算相同数组的两个状态之间的差异

v0.1.0-beta 2024-09-10 06:32 UTC

This package is auto-updated.

Last update: 2024-09-10 06:57:00 UTC


README

内容

关于

当你有一个数组,经过一些处理后它将发生变化,并且你想要捕获这些变化以便将它们插入/更新/删除到数据库表(例如)中时,这个库可以帮到你。也许它还需要你做其他事情。

安装

可以通过使用 Composer 来安装 array-state-observer,只需在你的项目中运行此命令即可

composer require world-warm-worm/array-state-observer

调用和使用库

调用和使用库的简单示例

<?php

require_once('vendor/autoload.php');

use WorldWarmWorm\ArrayStateObserver\SimpleArrayObserver;

// we have some dummy initial data. let it be three ids of something
$before = [1, 2, 3];

// let's change initial data through some job with it
$after = array_slice($before, 0, 2);

// here we have object of SimpleArrayObserver that contains calculated data
$observer = SimpleArrayObserver::init($before, $after);

// here we want to get all of calculated data
$result = $observer->all();

// that's it!
var_dump($result);

// short notation
// var_dump(SimpleArrayObserver::init($before, $after)->all());

/** 
  array(2) {
    ["added"]=>
    array(0) {
    }
    ["deleted"]=>
    array(1) {
      [2]=>
      string(1) "3"
    }
  }
 */

如果我们确定数据只将被删除或只将被添加,则提供了相应的方法。在上面的例子中,我们从数组中删除了最后一个id。因此,我们可以放心地使用 deleted() 方法来获取仅删除的id并进一步处理它

var_dump(SimpleArrayObserver::init($before, $after)->deleted());

/** 
 array(1) {
    [2]=>
    int(3)
  }
*/

GitHub

欢迎使用 array-state-observer