Michael,
POE::Wheel::Run::new is being called here, your Moose constructor will
never be called. Additionally POE::Wheel::Run uses Array refs for it's
instance type, which would not be compatible with the Hash ref
instance type that Moose would want to use.
I suggest you first take a look at MooseX::POE to see if that might be
able to do what you want. If it does not do what you are looking for
(or provide something similar enough) then I would suggest using
delegation here instead of inheritance (see the 'handles' option
detailed in Moose.pm, Moose::Manual::Delegation, and
Moose::Cookbook::Basics::Recipe11 for constructor args munging). If
you don't want to use delegation then I would suggest not using Moose
in this case.
- Stevan
On Feb 22, 2009, at 3:57 PM, Michael Potter wrote:
Something like:
package Proxy;
use Moose;
extends 'POE::Wheel::Run';
has 'type' => (is => 'ro', required => 1);
1;
my $proxy = Proxy->new(<normal wheel attrs>,type=>'foo');
--------------------
Everything works as expected, except for the fact that POE::Wheel::Run
complains when it sees the 'type' attr.
On Mon, Feb 23, 2009 at 2:58 AM, Stevan Little
<stevan.lit...@iinteractive.com> wrote:
Michael,
Well, if you are extending a non-Moose class, I assume you are
calling the
non-Moose constructor. In which case Moose has nothing to do with
this.
If you are extending a non-Moose class and using the Moose
constructor
then,.. well I would need to see some code as there are many
different ways
you could be doing that and so many different ways to solve this
problem.
- Stevan
On Feb 22, 2009, at 7:00 AM, Michael Potter wrote:
Hi
I am extending a non-Moose class, and I want to add an attribute
to my
derived class. Problem is, the base class complains (loudly) if it
gets attributes it was not expecting - and it seems the new
attribute
in the derived class get passed down to the base, hence the problem.
Is there an easy way to remove an attribute from the constructor
hash
once it has been used to initialize an attribute? Something like
this
would be nice:
has type => (
is => 'ro',
gobble => 1 # remove element from constructor hash when used to
initialize this attribute
);
Cheers