J'ai mis en place un peu le cas de test pour démontrer mon problème:Pourquoi MooseX :: Storage ne semble-t-il pas suivre les caractéristiques d'attributs de certains objets?
package P1;
use Moose;
use MooseX::Storage;
with Storage;
has 'blah' => (
is => 'rw',
);
package P2;
use Moose;
use MooseX::Storage;
with Storage;
has 'lol' => (
is => 'rw',
traits => ['DoNotSerialize']
);
package P3;
use Moose;
extends 'P2';
has 'magic' => (
is => 'rw',
);
package Test;
my $obj = P3->new(
magic => 'This ok!',
lol => sub { 'weee' }
);
my $stored = P1->new(blah => $obj);
use Data::Dumper; print Dumper ($stored->pack);
je me attends à ce pour imprimer l'objet, mais pas l'attribut « lol » dans le paquet P2 - cependant, je peux encore le voir dans le résultat de $stored->pack
$VAR1 = {
'__CLASS__' => 'P1',
'blah' => bless({
'magic' => 'This ok!',
'lol' => sub { "DUMMY" }
}, 'P3')
};
Suis-je utiliser MooseX :: Stockage mal, ou ce que ça ressemble le comportement bogué?
Je sais que c'est vieux, mais en fait cela ne semble pas être un bug. Comme le fait remarquer 'draegtun', il vous manque les informations de type pour que l'attribut 'blah' ne soit pas réellement sérialisé par MooseX :: Storage. Si elle était sérialisée, vous ne verriez pas le 'bless', mais plutôt la touche '__CLASS__'. MooseX :: Storage fait la plupart du temps s'effondrer en fonction de la contrainte de type fournie dans l'attribut, sans qu'il ne soit laissé de deviner. –