Skip to content
1.x
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Totem

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

       \\\\////
        |.)(.|
        | || |   Changeset calculator between two state of a data
        \(__)/   Compatibile with PHP 7.3, 7.4 or 8.0
        |-..-|
        |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

  1. Install phpunit if not already installed
  2. Run phpunit on the project