NAME
    POE::Declare - A POE abstraction layer for conciseness and simplicity

SYNOPSIS
      package MyComponent;
  
      use strict;
      use POE::Declare;
  
      declare foo => 'Atribute';
      declare bar => 'Internal';
  
      sub hello : Event {
          print "Hello World!\n";
      }
  
      sub hello_timeout : Alarm {
          print "Alas, I die!\n";
      }
  
      1;

DESCRIPTION
    WARNING: THIS CODE IS EXPERIMENTAL AND MADE BE CHANGED OR DELETED
    ENTIRELY WITHOUT NOTICE

    POE is a very powerful and flexible system for doing asynchronous
    programming.

    But personally, I find it confusing and tricky to use at times.

    In particular, I have found it hard to resolve POE's way of programming
    with the highly abstracted OO that I am used to, with layer stacked upon
    layer ad-infinitum to create powerful and complex systems that are still
    easy to maintain.

    I have found this particularly noticable as the scale of a codebase gets
    later. At three levels of abstraction the layering become quite
    difficult, and beyond this it became worse and worse.

    POE::Declare is my attempt to resolve this problem by locking down some
    of the traditional flexibility of POE, and by (hopefully) makeing it
    easier to split the implementation of each object between an
    object-oriented half and a POE half.

    This will hopefully allow me to utilise POE's asynchronous nature, while
    retaining the traditional codebase scaling capability provided by normal
    OO.

    Of course, this entire exercise is something of a grand experiment and
    it may well turn out that I am wrong. But I think I'm heading in the
    right general direction (I just don't know if I'm taking quite the right
    path).

METHODS
    For the first few releases, I plan to leave this module undocumented.

    That I am releasing this distribution at all is more of a way to mark my
    progress, and to allow other POE/OO people to look at the implementation
    and comment.

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

    <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=POE-Declare>

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

AUTHORS
    Adam Kennedy <adamk@cpan.org>

SEE ALSO
    POE, <http://ali.as/>

COPYRIGHT
    Copyright 2006 - 2009 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.

