relaxedws/merge

此包的最新版本(dev-master)没有可用的许可信息。

用于在标准化数组结构之间执行合并的库。

dev-master 2016-06-20 15:05 UTC

This package is auto-updated.

Last update: 2024-09-12 21:50:49 UTC


README

一个用于在关联数组上执行递归3路合并算法的库,用PHP编写。

洞察

此库旨在执行递归3路合并算法。它接受3个参数,这些参数是表示基本数组、本地数组和远程数组的数组。它逐行比较这些实体与其他数组。如果在这3个中只有一个更新了远程或本地数组,最终版本将包含所有未更改的数据以及更新数组(远程或本地)的更新数据。如果在同一行上更新了多个数组,将抛出ConflictException

安装

可以通过composer安装此库。

{
  "name": "myorg/mylib",
  "description": "A library depending on 3-way merge",
  "require": {
    "relaxedws/merge": "dev-master",
  }
}

示例

安装后,我们可以按以下方式执行合并

<?php

namespace testing;

require __DIR__ ."/vendor/autoload.php";

use Relaxed\Merge\ThreeWayMerge;

$original = [
    'keyA' => [
        0 => [
            'keyB' => 'This is honey
            like this',
            'keyC' => 'This is however, not apple',
        ],
        1 => [
            'keyB' => 'This is milk',
            'keyC' => 'This is mango',
        ],
        2 => 'a little sugar',
    ]
];
$local = [
    'keyA' => [
        0 => [
            'keyB' => 'This is honeybb
            like ti',
            'keyC' => 'This is however, not apple',
        ],
        1 => [
            'keyB' => 'This is milky milky',
            'keyC' => 'This is mango',
        ],
        2 => 'a little coffee'
    ]
];
$remote = [
    'keyA' => [
        0 => [
            'keyB' => 'This is honey
            like this',
            'keyC' => 'This is however, not apple',
        ],
        1 => [
            'keyB' => 'This is milk',
            'keyC' => 'This is changed because of remote',
        ],
        2 => 'a little sugar',
    ]
];

$merge = new ThreeWayMerge();
$updated_revision = $merge->performMerge($original, $local, $remote);

贡献

我们欢迎任何人使用、测试或为此项目做出贡献。我们有广泛的测试覆盖,但众所周知,软件中总是存在错误。请提交问题或拉取请求,并提供您的评论或建议。