Totem

Changeset calculator between two states of a data

View the Project on GitHub Wisembly/Totem

Totem

License Build Status Latest Stable Version Total Downloads Scrutinizer Quality Score Coverage Status SensioLabsInsight

       \\\\////
        |.)(.|
        | || |   Changeset calculator between two state of a data
        \(__)/   Requires PHP 5.4 ; Compatible PHP 5.5, PHP 5.6, and HHVM
        |-..-|
        |o\/o|
   .----\    /----.
  / / / |~~~~| \ \ \
 / / / /|::::|\ \ \ \
'-'-'-'-|::::|-'-'-'-'
       (((^^)))
        >>><<<   Snapshots currently natively supported :
        ||||||   - Array
        (o)(o)   - Object
        | /\ |   - Collection
        (====)
       _(_,__)
      (___\___)

Documentation

For any pieces of document, please look for the docs/ directory. You may also check up the compiled version

Installation

You have multiple ways to install Totem. If you are unsure what to do, go with the archive release.

Archive Release

  1. Download the most recent release from the release page
  2. Unpack the archive
  3. Move the files somewhere in your project

Development version

  1. Install Git
  2. git clone git://github.com/Wisembly/Totem.git

Via Composer

  1. Install composer in your project: curl -s http://getcomposer.org/installer | php
  2. Create a composer.json file (or update it) in your project root:

      {
        "require": {
          "wisembly/totem": "~1.4"
        }
      }
    
  3. Install via composer : php composer.phar install

Basic Usage

<?php

use Totem\Snapshot\ArraySnapshot;

$array = ['foo' => 'bar', 'baz' => 'qux'];
$snapshot = new ArraySnapshot($array); // Totem\Snapshot\ArraySnapshot

$array['foo'] = 'fubar';
$set = $snapshot->diff(new ArraySnapshot($array)); // Totem\Set

var_dump($set->hasChanged('foo'),
         $set->getChange('foo')->getOld(),
         $set->getChange('foo')->getNew(),
         $set->hasChanged('bar'));

/* 
 * expected result :
 *
 * bool(true)
 * string(3) "bar"
 * string(5) "fubar"
 * bool(false)
 */

Running Tests

$ php composer.phar install --dev
$ bin/phpunit