On Wednesday, October 2, 2002, at 09:11 PM, Dave Rolsky wrote:
> On Wed, 2 Oct 2002, william ross wrote:
>
>> sorry: i wasn't very clear, was I? I am using a method handler, but I
>> want to pass an object of another class to it each time it is called.
>> The object needs to be created outside of an individual request, and
>> therefore presumably in a startup file, and then either passed to the
>> handler along with each request, or somehow made available to all the
>> requests, but preferably without setting a class variable, which is
>> what I do at the moment but dislike.
>
> You could make the other object a singleton, so you could just do:
>
> my $factory = My::Factory->instance
I did have it set up that way at one point. it worked quite nicely as
long as I made the singleton in a subclass of the main Factory (which
might be shared by several applications with different configurations).
i gave up on it in the end because it seemed a bit overheated, but if
you approve, i shall reconsider.
so, rehearsing: all it should take is a Factory::Subclass->new(config
blah) in the startup script and a Factory::Subclass->instance() in the
handler? it does sound good if you put it like that.
incidentally I made the singleton like this (yes, more poop):
use base qw (Class::DBI::Factory Class::Singleton);
...
sub _new_instance { shift->new(@_) }
but it felt rather naughty to subclass the private _new_instance. if
anyone knows a better way, I'd be very glad to hear it.
(but this is galloping quickly away from the topic, and I'm sure I can
work it out in the end :)
thank you.
will