NAME

App::Conf::File - Load and access configuration data

SYNOPSIS

use App::Conf;

$config = App::Conf->new();
$config = App::Conf->new(configFile => $file);
print $config->dump(), "\n";       # use Data::Dumper to spit out the Perl representation

# accessors
$property_value = $config->get($property_name);
$branch = $config->get_branch($branch_name);  # get hashref of properties

# on-demand loading helper methods (private methods)
$config->overlay($config2);        # merge the two config structures using overlay rules
$config->overlay($config1, $config2);  # merge $config2 onto $config1
$config->graft($branch_name, $config2);  # graft new config structure onto branch

# By convention, the configurations for each App-Context service will be located
# two levels under the hash ref as shown.

$config->{Conf}              # config settings for all Conf services
$config->{Conf}{default}     # config settings for the default Conf service
$config->{Security}          # config settings for all Security services
$config->{Security}{default} # config settings for the default Security service
$config->{Template}{tt}      # config settings for the Template service named "tt"

# The default driver (if "configClass" not supplied) reads in a Perl
# data structure from the file.  Alternate drivers can read a Storable,
# unvalidated XML, DTD-validated XML, RDF-validated XML, or any other
# file format or data source anyone cares to write a driver for.

$conf = {
  'Standard' => {
    'Log-Dispatch' => {
      'logdir' => '/var/p5ee',
    }
  },
  'Authen' => {
    'passwd' => '/etc/passwd',
    'seed' => '303292',
  },
};

# A comparable unvalidating XML file would look like this.

<conf>
  <Standard>
    <Log-Dispatch logdir="/var/p5ee"/>
  </Standard>
  <Authen passwd="/etc/passwd" seed="303292"/>
</conf>

# A comparable ini file (.ini) would look like this.

[Standard.Log-Dispatch]
logdir = /var/p5ee
[Authen]
passwd = /etc/passwd
seed = 303292

# A comparable Java properties-like file would look like this.

Standard.Log-Dispatch.logdir = /var/p5ee
Authen.passwd = /etc/passwd
Authen.seed = 303292

DESCRIPTION

App::Conf::File is the class which represents configuration data in a file. The type of Serializer used to deserialize the data is determined by the extension on the file name and contents of the beginning of the file.

Class: App::Conf::File

* Throws: App::Exception::Conf
* Since:  0.01

Design

The App::Conf::File class extends the App::Conf class, overriding the create() method.

Constructor Methods:

new()

The constructor is inherited from App::Conf.

Public Methods:

get()

The constructor is inherited from App::Reference.

get_branch()

The constructor is inherited from App::Reference.

dump()

The constructor is inherited from App::Reference.

Protected Methods:

The following methods are intended to be called by subclasses of the current class.

create()

* Signature: $config_data = $config->create($named);
* Param:     void
* Param:     configFile     string
* Return:    $config_data   {}
* Throws:    App::Exception::Conf
* Since:     0.01

Sample Usage: 

$config_data = $config->create();
$config_data = $config->create(
    configFile => "config.xml",
);

This method overrides the default create() method for a Reference.

ACKNOWLEDGEMENTS

* Author:  Stephen Adkins <stephen.adkins@officevision.com>
* License: This is free software. It is licensed under the same terms as Perl itself.

SEE ALSO

App, App::Context, App::Reference, App::Conf