Class::Loader - Load modules and create objects on demand. |
Class::Loader - Load modules and create objects on demand.
$Revision: 2.2 $ $Date: 2001/07/18 20:21:39 $
package Web::Server; use Class::Loader; @ISA = qw(Class::Loader); $self->_load( 'Content_Handler', { Module => "Filter::URL", Constructor => "new", Args => [ ], } );
Certain applications like to defer the decision to use a particular module till runtime. This is possible in perl, and is a useful trick in situations where the type of data is not known at compile time and the application doesn't wish to pre-compile modules to handle all types of data it can work with. Loading modules at runtime can also provide flexible interfaces for perl modules. Modules can let the programmer decide what modules will be used by it instead of hard-coding their names.
Class::Loader is an inheritable class that provides a method, _load(), to load a module from disk and construct an object by calling its constructor. It also provides a way to map modules names and associated metadata with symbolic names that can be used in place of module names at _load().
_load()
loads a module and calls its constructor. It returns the newly
constructed object on success or a non-true value on failure. The first
argument can be the name of the key in which the returned object is
stored. This argument is optional. The second (or the first) argument is a
hash which can take the following keys:
_load()
calls
the constructor with this list. If no Args are present, _load()
will call
the constructor without any arguments.
_load()
can fetch &
install it from CPAN provided the CPAN key is present. This functionality
assumes availability of a pre-configured CPAN shell.
_load()
arguments. Here's an example:
$self->_storemap ( "URL" => { Module => "Filter::URL", Constructor => "foo", Args => [qw(bar baz)], } );
# time passes...
$self->{handler} = $self->_load ( Name => 'URL' );
_retrmap()
returns the entire map stored with Class::Loader. Class::Loader
maintains separate maps for different classes, and _retrmap()
returns the
map valid in the caller class.
AnyLoader(3)
Vipul Ved Prakash, <mail@vipul.net>
Copyright (c) 2001, Vipul Ved Prakash. All rights reserved. This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Class::Loader - Load modules and create objects on demand. |