Coder Social home page Coder Social logo

tomvangoethem / serialized Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ktomk/serialized

0.0 1.0 0.0 495 KB

PHP Library for Serialized Data

Home Page: https://github.com/ktomk/Serialized/

License: GNU Affero General Public License v3.0

PHP 100.00%

serialized's Introduction

  Serialized - PHP Library for Serialized Data

  Copyright (C) 2010-2011 Tom Klingenberg, some rights reserved

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.

    See COPYING.

  README

    Serialized is a set of classes that can parse serialized data into a
  normalized representation (semi structured data or S-expression).

    The base service is to parse serialized data into a so called Array
  Notation which represents both structure and the value(s) of PHP
  serialized data. See ARRAYNOT.

    This can be used to inspect and validate serialized data w/o the need
  to unserialize it first. For example if waking up sleeping objects is
  unwanted (parsing instead the factual process of unserializing). The
  parsed data can then be inspected and changed.

    Serialized variables (Sessions) are supported as well. Those are
  a list of serialized values with their variable name.

    Potential field of use is static data analysis, session display,
  inspection and manipulation of serialized data, converting etc. .

    Right now, the library can already do both: parsing into the Array
  Notation and dumping it into serialized data again. Output into other
  formats (Text, XML, ...) is possible as well.

    The following output formats to display serialized data and sessions
  are - as of now - available (example of a serialized array data sample
  dumped differently):

    * Text - Plain text, suitable for display in a shell environment.

        `-- array(4):
             +-- [user] => string(9): "user-name"
             +-- [network] => array(1):
             |    `-- [localip] => string(7): "1.2.3.4"
             +-- [2] => string(4): "Zwei"
             `-- [language] => string(6): "german"

    * XML - Well-formed, machine readable and easy to convert.

        <?xml version="1.0" encoding="us-ascii"?>
        <serialized>
          <array members="4">
            <item name="user" type="string">
              <string len="9" value="user-name"/>
            </item>
            <item name="network" type="string">
              <array members="1">
                <item name="localip" type="string">
                  <string len="7" value="1.2.3.4"/>
                </item>
              </array>
            </item>
            <item name="2" type="int">
              <string len="4" value="Zwei"/>
            </item>
            <item name="language" type="string">
              <string len="6" value="german"/>
            </item>
          </array>
        </serialized>

    * Serialized - To store back.

        a:4:{s:4:"user";s:9:"user-name";s:7:"network";a:1:{s:7:"localip";\
        s:7:"1.2.3.4";}i:2;s:4:"Zwei";s:8:"language";s:6:"german";}

    The library sources contain a test-suite to guarantee a certain level
  of confidence and strictness.

    If you run into any problems with serialized data on your end, please
  report back as this improves the library. This will help to break the
  parser so to reproduce and extend the test-suite with abstracted
  serialized data for future regression testing.

    Naturally private data will be anonmyzed before it is put into the test-
  suite and generally it will not be published w/o a written consent.

    Feedback of any kind is always warmheartly appreciated.

    Requirements:

    PHP 5.3.3 or higher
    PHPUNIT 3.5.5 or higher (for the test-suite)

    Use:

      To make use of the library, copy over the src directory into your
    library folder.

      Serialized ships with a PSR-0 compatbile autoloader. To make use of the
    library require the base file:

      require_once('library/Serialized.php');

      After including it (the autoloader), auto-loading is enabled and the
    parser and the dumpers can be used:

      $array = Serialized\Parser::parse($serialized);

      Example: 00-basic-parsing

      Instead of using the autoloader, the library can be manually loaded as
    well:

      require_once('library/Serialized.php');
      Serialized::loadLibrary();

      For debugging purposes, there is a dump function which prints structure
    and data of a serialized string to standard output:

      $parser = new Serialized\Parser($serialized);
      $parser->dump();

      Example: 01-debug-dump

    Resources:

    PHP Serialize Function (PHP Manual)
  http://php.net/manual/en/function.serialize.php

    PHP Unserialize Function (PHP Manual)
  http://php.net/manual/en/function.unserialize.php

    Object Serialization (PHP Manual)
  http://php.net/manual/en/language.oop5.serialization.php

    The Serializable interface (PHP Manual)
  http://php.net/manual/en/class.serializable.php

    Runtime Configuration "unserialize_callback_func" (PHP Manual)
  http://www.php.net/manual/en/var.configuration.php#unserialize-callback-func

    PHP Session Decode Function (PHP Manual)
  http://php.net/manual/en/function.session-decode.php

    PHP Serialize C Sourcecode
  http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/var.c

    PHP Unserialize C Sourcecode
  http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/var_unserializer.re

    PHP Serialization And Recursion Demystified (by Andrea Giammarchi; 2009-09-07)
  http://webreflection.blogspot.com/2009/09/php-serialization-and-recursion.html

    Recursive Reference Serialize Library (by Nghia Nguyen; 2009-06-01)
  http://www.phpclasses.org/package/5336-PHP-Serialize-objects-with-cyclic-references.html

serialized's People

Contributors

ktomk avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.