Hi,

Monday, October 6, 2003, 3:20:08 AM, you wrote:
GS> Dan Anderson wrote:

>>Out of curiousity, what exactly are you trying to do?  Are you sure this
>>type of framework is most appropriate (and easiest to implement?)
>>
GS> In my current setup, the more classes Im adding to the code, the more 
GS> complex things seem to get.
GS> For example.
GS> I have a smarty object that has a reference to a DB object.
GS> I plan on converting a file of user management functions to a class.
GS> If I do, then that new class, is going to need a reference to the DB object.
GS> Then on top of that, the smarty object is going to need a reference to 
GS> the user management object.
GS> By the time we are here, the smarty object contains a reference to the 
GS> DB object, *and*
GS> a reference to the user management object which contains a reference to 
GS> the DB object.
GS> And thats just the beginning.  There are other classes that intertwine 
GS> in this manner.
GS> So what I would I forsee as a better playing ground would be
GS> 1.  child classes being capable of talking to each other
GS> For example, the smarty class capable of calling the DB class and the 
GS> user management class
GS> without the need for all those redundant *large* references.

GS> 2.  The parent class capable of talking to the child classes.

GS> In this context, parent and child is not to be thought of as in normal 
GS> class structures where children *extends* parents.
GS> All the *parent* class is, a means to provide wrappers around other 
GS> *child* classes,
GS> and act as a controller.  The *child* methods/variables, 
GS> aren't/shouldn't be called directly.

GS> Also, if I can work it out, the class mm would only intially contain a 
GS> constructor, and maybe a
GS> class loader.
GS> The class loader provides the additional class method wrappers on demand 
GS> when needed.

GS> This is merely an first rate idea.  Nothing is remotely concrete about it.

GS> Thanks for looking.


To do this I have my classes register themselves in a global array.
For example a mysql class which gets used a lot does this in its constructor:

function mysql_class($db='',$ini=''){
  global $class_ref;
  $class_ref["mysql_class"] =& $this;
  .
  .
  .
}
Then any class that needs access to mysql_class does this in the constructor:
class  galleryClass(
  var $mysql;
  var $db = 'test';
  function galleryClass(){
    global $class_ref;
    if(!empty($class_ref['mysql_class'])):
      $this->mysql =& $class_ref['mysql_class'];
    else:
      $this->mysql = new mysql_class();
    endif;
    if(!empty($this->mysql)):
      $this->con = $this->mysql->get_handle($this->db);
    endif;
    .
    .
  }
  .
  .
}
This way there is only need for 1 instance of the mysql class.
I use global as a bad habit, but you can do the same with $GLOBALS['class_ref']

-- 
regards,
Tom

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to