POE::Declare::Meta - Metadata object that describes a POE::Declare class


POE::Declare::Meta objects are constructed and used internally by POE::Declare during class construction. POE::Declare::Meta objects are not created directly.

Access to the meta object for a POE::Declare class is via the exported meta function.



The name accessor returns the name of the class for this meta instance.


The alias accessor returns the alias root string that will be used for objects that are created of this type.

Normally this will be identical to the class name but may be changed at constructor time.


Because each object has its own POE::Session, each session also needs its own session alias, and the session alias is derived from a combination of the alias method an an incrementing sequence value.

The sequence accessor returns the most recently requested value from the sequence. As with sequence in SQL, not all values pulled from the sequence will necesarily be used in an object, and objects will not necesarily have incrementing sequence values.


The next_alias method generates and returns a new session alias, by taking the alias base string and appending an incremented sequence value.

The typical alias string returned will look something like 'My::Class.123'.


The super_path method is provided as a convenience, and returns a list of the inheritance path for the class.

It is equivalent to Class::ISA::self_and_super_path('My::Class').


  my $attribute = My::Class->meta->attr('foo');

The attr method is used to get a single named attribute meta object within the class meta object.

Returns a POE::Declare::Meta::Attribute object or undef if no such named attribute exists.


Bugs should be always be reported via the CPAN bug tracker at

For other issues, or commercial enhancement or support, contact the author.


Adam Kennedy <>




Copyright 2006 - 2012 Adam Kennedy.

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

The full text of the license can be found in the LICENSE file included with this module.