NAME

MooseX::Storage::Base::SerializedClass - Deserialize according to the serialized __CLASS__

VERSION

version 0.2.0

SYNOPSIS

  package ThirdDimension;
  use Moose::Role;

  has 'z' => (is => 'rw', isa => 'Int');

  package Point;
  use Moose;
  use MooseX::Storage;

  with Storage( base => 'SerializedClass', traits => [ 'WithRoles' ] );

  has 'x' => (is => 'rw', isa => 'Int');
  has 'y' => (is => 'rw', isa => 'Int');

  1;

  use Moose::Util qw/ with_traits /;

  my $p = with_traits( 'Point', 'ThirdDimension' )->new(x => 10, y => 10, z => 10);

  my $packed = $p->pack(); 
  # { __CLASS__ => 'Point', '__ROLES__' => [ 'ThirdDimension' ], x => 10, y => 10, z => 10 }

  # unpack the hash into a class
  my $p2 = Point->unpack($packed);

  print $p2->z;

DESCRIPTION

Behaves like MooseX::Storage::Basic, with the exception that the unpacking will reinflate the object into the class and roles as provided in the serialized data. It is means to be used in conjuncture with MooseX::Storage::Traits::WithRoles.

EXPORTED FUNCTIONS

The function moosex_unpack can be exported. The function unpacks a serialized object based on its __CLASS__ and __ROLES__ attributes.

    use MooseX::Storage::Base::SerializedClass qw/ moosex_unpack /;

    my $object = moosex_unpack( $struct );

AUTHOR

Yanick Champoux <yanick@babyl.dyndns.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by Yanick Champoux.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.