NAME
Class::Data::ConfigHash - Add Catalyst-Style Config To Your Class
NAME
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;
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