Sam Vilain > MooseX-NaturalKey > MooseX::NaturalKey::Meta::Class

Download:
MooseX-NaturalKey-0.03.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Source  

NAME ^

MooseX::NaturalKey::Meta::Class

SYNOPSIS ^

    # in your class which mimics Moose.pm;
    sub import {
        my $caller = caller;
        Moose::init_meta
            ($caller,
             'Moose::Object',
             'MooseX::NaturalKey::Meta::Class');

        Moose->import({ into => $caller });
    }

    # if you wanted special behaviour you could define:
    package My::NaturalKey::Meta::Class;
    extends 'MooseX::NaturalKey::Meta::Class

    # override where the instance cache comes from
    override cache => sub {
        my $self = shift;
        return \%cache;
    };

    # alternative method
    my %cache;
    __PACKAGE__->meta->cache(\%cache);

    # override how the primary keys are transformed into a
    # cache hash slot
    override make_cache_key => sub {
        my $self = shift;
        my $names_arrayref = shift;
        my $values_arrayref = shift;

        # example
        join "\0", @$values_arrayref;
    };

DESCRIPTION ^

This metaclass implements 'Natural Key' Moose classes. So, when you create a new MooseX::NaturalKey, it creates one of these objects. During object construction, creating the actual instance is deferred to the created object.

After the object is constructed as normal, it checks using the primary keys list it knows about, what the values of those slots are in the constructed object.

SEE ALSO ^

MooseX::NaturalKey, Moose::Meta::Class.

AUTHOR AND LICENSE ^

Copyright 2008, Sam Vilain, <samv@cpan.org>. All Rights Reserved.

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

syntax highlighting: