[Dbix-class] CDBI Compatability Issue: Iterators
Matt S Trout
dbix-class at trout.me.uk
Fri Aug 19 21:41:07 CEST 2005
On Fri, Aug 19, 2005 at 10:46:41AM -0400, Christopher H. Laco wrote:
> That also worked but brought up another problem.
>
> DBIx::Class::Resultset->next calls
> DBIx::Class::Row->_row_to_object($self->{cols}, \@row)
>
> DBIx::Class::Row->_row_to_object calls
> $class->new(\%vals) on the child object class to be created, which in my
> case has it's own custom ->new() method.
The thing being, ->create calls ->new so unless your ->new is compatible
you're still going to have problems.
> This is different from Class::DBI::Iterator; whos next method calls
> $self->class->construct($use)
Yep. I should really add a "sub construct { shift->new(@_); }" to emulate
this.
> So, how do we fix this? can _row_to_object have and extra paramater
> specifying the constructore method?
Providing a single constructor method with the standard name for said
is critical to allow people to override/tweak/whatever object construction
in a standard way. Your problem as I see it is that Class::DBI behaves
non-standardly in terms of object construction and you've mistakenly assumed
whatever other libraries you use will make the same design error :)
--
Matt S Trout Website: http://www.shadowcatsystems.co.uk
Technical Director E-mail: mst (at) shadowcatsystems.co.uk
Shadowcat Systems Ltd.
+ Help us build a better perl ORM: http://dbix-class.shadowcatsystems.co.uk/ +
More information about the Dbix-class
mailing list