NAME
MongoDBI::Application - MongoDBI Application Class and Document Class Controller
VERSION
version 0.0.2
SYNOPSIS
package CDDB;
use MongoDBI;
app {
# shared mongodb connection
database => {
name => 'mongodbi_cddb',
host => 'mongodb://localhost:27017'
},
# load child doc classes
classes => {
self => 1 # loads CDDB::*
}
};
1;
DESCRIPTION
MongoDBI::Application is used to load and configure associated document classes. It is essentially the application hub (or starting-point). Because all MongoDBI document classes can have their own database configuration, and thus need to be setup individually, MongoDBI::Application can be used to bring those individual classes together to form a single application.
MongoDBI::Application exports the app() method which allows you to configure your application having the configuration applied to all associated document classes. MongoDBI::Application will also load all associated classes and make them available through the class() method after instantiation.
EXPORTS
app
The app method will be exported into the calling class allowing it to configure all associated document classes. MongoDBI::Document classes are designed so that each class may use a different database connection for greater flexibility, however there are times when you will want/need all of your application's document classes to share a single database connection and MongoDBI::Application allows you to do that. MongoDBI::Application can also preload specified classes.
The following examples are recognized parameters the app() method uses to configure your application.
# share mongodb connection across all document classes
app {
# shared mongodb connection
# accepts all parameters MongoDB::Connection does
database => {
name => 'mongodbi_cddb',
host => 'mongodb://localhost:27017'
}
};
# load desired document classes
app {
classes => {
self => 1, # loads all classes under the current namespace
load => [
'Other::Classes',
'More::Classes',
]
}
};
ATTRIBUTES
config
The config attribute gives you access to the MongoDBI::Application class configuration although it is likely you will never need to used it as the important elements are all exposed via methods.
my $app = App->new;
$app->config;
METHODS
class
The class method returns the class (string, uninstantiated) for the associated document class registered by the app() method. The class method accepts a class short-name and returns the fully-qualified class name.
my $app = App->new;
# base class name under same namespace not required (e.g. app_*)
my $foo = $app->class('foo'); # returns App::Foo;
my $bar = $app->class('bar_baz'); # returns App::BarBaz;
# must specify the base class name on foreign classes
my $xyz = $app->class('app2_xyz'); # returns App2::XYZ;
# if you're a stickler for convention,
# you can also use case-appropriate syntax
my $foo = $app->class('Foo'); # returns App::Foo;
my $bar = $app->class('BarBaz'); # returns App::BarBaz;
AUTHOR
Al Newkirk <awncorp@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by awncorp.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.