[Dbix-class] Using Class::Std under-the-hood
adam at stalecoffee.org
Thu Aug 11 09:56:13 CEST 2005
I can't vouch for whether this belongs in the internals of
DBIx::Class, but thanks for bringing it up! Class::Std, and inside-
out objects, look cool as hell. :)
On Aug 10, 2005, at 11:36 PM, Dan Kubb wrote:
> Via IRC some of us have been discussing converting DBIx::Class to
> using Class::Std under-the-hood. If you're not familiar with
> Class::Std, you can find more about it here:
> About a week ago I sent a message to the list about
> which will be rolled into DBIx::Class shortly. I used Class::Std
> for everything underneath, more as an experiment than anything, but
> really happy with the results. So much so that we're considering
> switching from using blessed hash objects to inside-out objects, and
> using Class::Std as a base.
> A few of the benefits to using Class::Std are: (there's more, read
> the docs)
> - Relatively simple to switch. I did it in about 10 to 15 minutes
> per perl module. Granted, the code-base was relatively small, but
> it was fairly painless and only took a couple of hours overall.
> - It had the nice side effect of cutting out about 15% of my code
> since much of the standard boilerplate stuff is handled by
> - Strong encapsulation. It is impossible to access the underlying
> data, except through a well defined interface which you control
> - Automatic accessor/mutator creation. Can be controlled though to
> provide both, either, or no external access.
> - Automatic constructor creation.
> - Mark any method as protected/private to prevent access to specific
> methods from outside your inheritance tree.
> - Handled multiple inheritance dispatching, similar in result to
> NEXT, but simpler. Its easier to get things right. Check out
> the CUMULATIVE tag to see more.
> - A clean way to specify overload behavior for objects. Much
> nicer than overload.pm.
> - Simple ways to dump the underlying data structure should you
> need it for debugging. One of the biggest complaints with
> inside-out objects is that the data is so hidden you can't see
> it when you're initially writing and debugging. With Class::Std
> objects its easy -- you just do:
> warn $self->_DUMP;
> This will return a string representation of the internal state
> of the object.
> - Written by Damian Conway ;) He said the module had gotten a lot
> of interest as OS Con. I presume this is partly because he
> it in two chapters of his new book, Perl Best Practices.
> - A very perl6-like syntax.
> Anyway, its a pretty nice module and I recommend checking it out.
> I could include more sample code, but the documentation is a better
> than anything I could write at the moment ;)
> We're looking to get some feedback before making any decisions. If
> you've got anything pro or con to add, now's the time to speak up..
> Dan Kubb
> List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
> Wiki: http://dbix-class.shadowcatsystems.co.uk/
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
More information about the Dbix-class