I'm not sure that I'm understanding you. You need your database connection, but don't want to pass is as a parameter all over the place. That is usually done with a factory object. That factory object is a singleton (aka - global) and you ask it for a DB connection. It returns the same MyApp::DBConnection object to everyone. Your code snippet becomes

my $self = shift; my $connection = MyApp::ConnectionFactory->connection(); my $user = MyApp::DB::User->new({dbh => $connection->dbh()});

Is this even close to what you want?

Also, that { dbh => $value } thing is ugly. Use BUILDARGS so that the constructor (aka 'new') takes a single arg.

sub BUILDARGS { my ($class, $dbh) = @_; { dbh => $dbh }; }

I think that is much easier on the eyes. And instead of creating all the connections at startup time, I'd make 'em lazy and only have them done when necessary.

Good luck.

- doug


In reply to Re: passing objects to dependancies by doug
in thread passing objects to dependancies by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.