The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Ambrosia::core::ClassFactory - a factory of classes.

VERSION

version 0.010

SYNOPSIS

    require Ambrosia::core::ClassFactory;

    #In memory (on fly)
    Ambrosia::core::ClassFactory::create('Employes::Person', {public => qw/FirstName LastName Age/});
    my $p = new Employes::Person(FirstName => 'John', LastName => 'Smith', Age => 33);

    #From module Employes/Person.pm (Employes::Person created by Ambrosia::Meta)
    my $p = Ambrosia::core::ClassFactory::create_object('Employes::Person', (FirstName => 'John', LastName => 'Smith', Age => 33));
    print $p->FirstName; #John

DESCRIPTION

Ambrosia::core::ClassFactory is a factory of classes that allows to produce classes on the fly, to create objects of certain type and just to load packages.

SUBROUTINES

create ($package, $fields)

    Produces class of represented type dynamically with represented fields.

    create($package, $fields);
    in params:
        $package - name of class ('Foo::Bar::Baz')
        $fields - hash. See L<Ambrosia::Meta>

create_object ($package, %params)

    Loads the package and creates the appropriate object and initializes it by the specified parameters.

    in params:
        $package - name of class ('Foo::Bar::Baz')
        %params - data hash.

load_class ($package)

    Imports some semantics into the current package from the named module,
    generally by aliasing certain subroutine or variable names into your package.
    It is exactly equivalent to B<use> but without B<BEGIN>

    in params:
        $package - name of class ('Foo::Bar::Baz')

    equivalent: require Foo::Bar::Baz; Foo::Bar::Baz->import;

DEPENDENCIES

Ambrosia::core::Exceptions Ambrosia::Meta

THREADS

Not tested.

BUGS

Please report bugs relevant to Ambrosia to <knm[at]cpan.org>.

COPYRIGHT AND LICENSE

Copyright (C) 2010-2012 Nickolay Kuritsyn. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

Nikolay Kuritsyn (knm[at]cpan.org)