divoxx / ruby-php-serialization

PHP's serialization implemenatation for ruby

This URL has Read+Write access

name age message
file .document Fri Sep 25 11:51:34 -0700 2009 Initial commit to ruby_php_serialization. [divoxx]
file .gitignore Fri Sep 25 11:51:34 -0700 2009 Initial commit to ruby_php_serialization. [divoxx]
file LICENSE Fri Sep 25 11:51:34 -0700 2009 Initial commit to ruby_php_serialization. [divoxx]
file README.rdoc Tue Oct 06 08:14:31 -0700 2009 Fix README [divoxx]
file Rakefile Fri Oct 02 12:35:30 -0700 2009 Add unserialization specs [divoxx]
file VERSION Fri Dec 18 04:20:57 -0800 2009 Version bump to 0.5.3 [Rodrigo Kochenburger]
directory features/ Fri Oct 02 11:23:22 -0700 2009 Fix old dependencies to ruby-php-serialization ... [divoxx]
directory lib/ Fri Dec 18 04:19:04 -0800 2009 Fix bug: http://github.com/divoxx/ruby-php-seri... [kinch]
file php-serialization.gemspec Fri Dec 18 04:21:02 -0800 2009 Regenerated gemspec for version 0.5.3 [Rodrigo Kochenburger]
directory spec/ Mon Oct 05 15:38:56 -0700 2009 Fix that array or object serialization doesn't ... [divoxx]
README.rdoc

PhpSerialization

Ruby implementation of PHP’s serialization. This is special useful for reading PHP session files.

Serialization examples

Primitive values

  PhpSerialization.dump(10)       # => "i:10;"
  PhpSerialization.dump("Name")   # => "s:4:\"Name\";"
  PhpSerialization.dump(true)     # => "b:1;"
  PhpSerialization.dump(nil)      # => "N;"

Array

  PhpSerialization.dump([true, "foo"]) # => "a:2:{i:0;b:1;i:1;s:3:\"foo\";}"

Hash

  PhpSerialization.dump("name" => "Rodrigo", "age" => 23) # => "a:2:{s:4:\"name\";s:7:\"Rodrigo\";s:3:\"age\";i:23;}"

Object

  class Person
    attr_accessor :name, :age
  end

  person = Person.new
  person.name = "Rodrigo"
  person.age  = 23

  PhpSerialization.dump(person) # => "O:6:\"Person\":2:{s:4:\"name\";s:7:\"Rodrigo\";s:3:\"age\";i:23;}"

Unserialization examples

Primitive values

  PhpSerialization.load('i:10;')       # => 10
  PhpSerialization.load('s:4:"Name";') # => "Name"
  PhpSerialization.load('b:1;')        # => true
  PhpSerialization.load('N;')          # => nil

Array

  PhpSerialization.load('a:2:{i:0;b:1;i:1;s:3:"foo";}') # => [true, "foo"]

Hash

  PhpSerialization.load('a:2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}') # => {"name" => "Rodrigo", "age" => 23}

Object

  class Person
    attr_accessor :name, :age
  end

  person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')
  person.name # => "Rodrigo"
  person.age  # => 23

Object without class will map to a Struct

  person = PhpSerialization.load('O:6:"Person":2:{s:4:"name";s:7:"Rodrigo";s:3:"age";i:23;}')
  person.class # => Struct::Person
  person.name  # => "Rodrigo"
  person.age   # => 23

You can also call unserialize() or restore(), they are alias to the load().

Copyright

Copyright © 2009 Rodrigo Kochenburger. See LICENSE for details.