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.