more useful options | |
PerlMonks |
Re: Cross-Package/Object Communicationby IOrdy (Friar) |
on Aug 21, 2002 at 16:06 UTC ( [id://191780]=note: print w/replies, xml ) | Need Help?? |
At the moment I've been writing my first "big" application and I've been structuring my code roughly like yours (2 style) though with a lot more packages and I too would love to know if there is a better solution as it's become increasingly awkward to access all the data my application needs at any one point.
My current structure is as follows:
Xmlio::Apache::Handler (mod_perl apache handler starts new instance of Xmilo) Xmilo (main package) # inits in order the following and adds returned reference to blessed hash. - Xmilo::Config (loads config from XML file and returns reference) - Xmilo::DB::mySQL (make DB connection and returns reference) - Xmilo::User (checks cookie data against database, uses Xmilo::Cookie to fetch cookie data and returns reference to user info hash) # check for an OP code by checking the params added when Xmilo::Apache::Handler started Xmilo. example ?op=new; - Xmilo::OP (reads OP directory for all OP classes and checks tha then using a common constructor creates a new instance of the OP and passes everything in the main hash to the OP package) - Xmilo::OP::<opcode> (checks that current user has level of access required for module then executes sql statements etc. and parses returned XML with Xmilo::XSLT and returns XHTML to Xmilo) # Display returned XML Xmilo::Apache::Handler (takes returned XHTML from Xmilo::OP::<opcode> and displayes it vi Xmilo::Apache::Handler) # End Now the problem is my main class will be the only class ever that has all the elements required to create a new Xmilo::Config object so when I need to access config data from Xmilo::Config in say one of the OP codes I have to use $xmilo->{config}->get_value('name'); It's a short example but sometimes I end up with $xmilo->{foo}->{bar}->{foobar}->method(); which just seems wrong. Is there something fundamental that I too am missing?
In Section
Seekers of Perl Wisdom
|
|