Daisuke Maki > Class-Data-ConfigHash > Class::Data::ConfigHash

Download:
Class-Data-ConfigHash-0.00002.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.00002   Source  

NAME ^

Class::Data::ConfigHash - Add Catalyst-Style Config To Your Class

NAME ^

  package MyClass;
  use base qw(Class::Data::ConfigHash);

  __PACKAGE__->config(
    foo => 'bar'
  );

DESCRIPTION ^

I often times find myself wanting a per-class config that can be used to provide sane class-level defaults, but with the ability to easily customize the values at run time.

  package MyClass;
  __PACKAGE__->config({
    foo => 1,
    bar => 2
  });

  # Later, in perhaps an initialize hook somewhere
  my %config = read_config_from_file() ; # say, %config = ( foo => 3 )
  MyClass->config(\%config);

  MyClass->config->{foo}; # yields 3
  MyClass->config->{bar}; # yields 2

The idea is that you can hardcode the defaults in your class, but you can also easily override them by merging the original hash with a newly given hash. This feature is handled beautifully in Catalyst.

So there, this module is basically that feature from Catalyst ripped out to a separate module so it can be used elsewhere.

To use, simply subclass it in your module:

  package MyClass;
  use base qw(Class::Data::ConfigHash);

Done! Now you can use ->config in MyClass.

METHODS ^

config([\%hash])

Accessor for the underlying config.

  # set 
  $class->config(\%hash);
  $class->config->{whatever} = 'foo';

  # get
  $class->config->{whatever};

If given a hashref argument, the values in the hashref are merged with whatever values that existed prior to that. This merge is performed recursively to the entire hash.

merge_config_hashes(\%lefthash, \%righthash)

Merges the two config hashes.

CREDITS ^

Sebastian Riedel, Marcus Ramberg, Matt S Trout wrote the code.

AUTHOR ^

Daisuke Maki <daisuke@endeworks.jp> - Stole the code from Catalyst and repackaged it

LICENSE ^

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

See http://www.perl.com/perl/misc/Artistic.html

syntax highlighting: