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

NAME

POE::Declarative::Mixin - use different declarative POE packages together

VERSION

version 0.09

SYNOPSIS

This is a really poor producer/consumer example, but it shows how the states of each mixin get pulled into the second class.

  package Producer;
  use base qw/ POE::Declarative::Mixin /;

  use POE;
  use POE::Declarative;

  on produce => run {
      push @{ get(HEAP)->{store} }, get ARG0;
  };

  package Consumer;
  use base qw/ POE::Declarative::Mixin /;

  use POE;
  use POE::Declarative;

  on consume => run {
      print "Consuming ", shift @{ get(HEAP)->{store} }, "\n";

      yield 'consume' if scalar @{ get(HEAP)->{store} };
  };

  package ProducerConsumer;

  use POE;
  use POE::Declarative;

  # Our mixins
  use Consumer;
  use Producer;

  on _start => run {
      for (1 .. 10) {
          yield produce => $_;
      }

      yield 'consume';
  };

DESCRIPTION

Mixin classes provide a nice abstraction for joining multiple functions together into a single package. This is similar to multiple inheritance, but doesn't modify @ISA for the class.

METHODS

import

This provides the basic magic to make this happen. If you are creating a mixin class that needs to further customize import, you'll probably want to see "export_poe_declarative_to_level".

export_poe_declarative_to_level LEVEL

This exports the states defined in the mixin to the package specified by level. The most common case for use would be in your mixin:

  sub import {
      my $class = shift;

      # Do other custom import tasks

      $class->export_poe_declarative_to_level(1);
  }

If you do not need to define a custom "import" method, you probably should ignore this method.

SEE ALSO

POE::Declarative

AUTHORS

Andrew Sterling Hanenkamp <hanenkamp@cpan.org>

COPYRIGHT AND LICENSE

Copyright 2007 Boomer Consulting, Inc. All Rights Reserved.

This program is free software and may be modified and distributed under the same terms as Perl itself.