NAME
Config::Simple::App - Perl extension for managing application's configuration settings
SYNOPSIS
# inside App/Config.pm
package App::Config;
use base qw( Config::Simple::App );
sub _init {
my $self = shift;
$self->define("AppPath", "/home/sherzodr/public_html/author/");
$self->define("AppURL", "http://author.handalak.com/");
$self->define("CGIPath", $self->AppURL . "cgi-bin/" );
$self->define("DBDriver");
$self->define("DBName");
$self->define("DBUser");
$self->define("DBPassword");
$self->define("DBPath", $self->AppPath . "db/");
}
1;
__END__;
# in your application:
$config = new App::Config("config.ini");
print $config->AppPath();
# etc..
ABSTRACT
Config::Simple::App is meant to be sub classed by applications'
configuration manager class. Relies on Config::Simple to parse
configuration files into configuration manager instance.
DESCRIPTION
One can, of course, use Config::Simple to manage their applications' configuration files. Although perfect for reading and writing configuration files of various formats, Config::Simple does not provide obvious ways for validating configuration file's attributes and for assigning default attribute values.
Is that such a big deal? Consider the following:
Most applications rely on predefined configuration attributes.
More often than not configuration files consist of attributes that are rarely modified, but read frequently.
All configuration attributes should not be required to be set explicitly. Applications must be able to derive default values for missing attributes, possibly by looking at other attributes.
Typos in configuration files must be detected as early as possible. Complex validation routines may be required to validate certain settings (such as a path that doesn't exist, but should).
Name based access is sometimes preferred
Config::Simple::App attempts to deliver all the above features to your application
EXPORT
None.
PROGRAMMING STYLE
Config::Simple::App is not meant to be used directly, but through sub classing.
First step in creating a configuration manager class is to subclass Config::Simple::App.
package App::ConfigManager;
use base qw( Config::Simple::App );
Config::Simple::App provides new() and define() methods to your configuration class. The next step is to define an _init()
routine that gets called by new() after configuration file has been processed. You need to call define() for each attribute that a configuration file can have that is considered valid. This does not mean all those attributes must be present, but can be present.
sub _init {
my $self = shift;
$self->define("Path");
$self->define("TemplatePath", $self->Path . 'tmpl');
}
METHODS
SEE ALSO
AUTHOR
Sherzod B. Ruzmetov <sherzodr@localdomain>
COPYRIGHT AND LICENSE
Copyright 2005 by Sherzod B. Ruzmetov
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.