"Justin Patrin" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Bernie wrote:
>
> > Howdy,
> >     I am writing a program that has a handful of classes.  I would like
> > to be able to get information from one object to the other.  I have a
> > couple of my classes extending others, but are there other ways to do
this?
> >
> > For example:  If I have a database class and a separate class that would
> > like to execute an sql statement...
> >
> > class mydbclass {
> >     var $db;
> >     function mydbclass ($server,$username,$password,$database){
> >         $this->db=mysql_connect($server, $username, $password);
> >         mysql_select_db("$database",$db);
> >     }
> >
> >     function dosql($sql){
> >         $result = mysql_query($SQL,$db);
> >     }
> >
> > }
> >
> > class myotherclass {
> >     function myotherclass(){
> >         $sql="select * from mytable";
> >
> >         #now, how can I use $mydbclass->dosql($sql) to
> >         #execute this statement?
> >
> >         #I want to be able to build a bunch of html with
> >         #the resulting records and it wouldn't make
> >         #sence to build all that in my db class
> >
> >     }
> > }
> >
> >
> > Thanks!
>
> I would suggest something like this:
>
> class myotherclass {
>      var $db
>
>      function myotherclass(&$db){
>          $this->db =& $db;
>
>          $sql="select * from mytable";
>
>          $this->db->dosql($sql);
>      }
> }
>
> $db = new mydbclass();
> $other = new myotherclass($db);
>
> I would also suggest capitalizing the class names and using another DB
> abstraction layer (such as PEAR DB or MDB) but that's your option. ;-)

Good point Justin. You do not necessarily need a $db var in your data
class - just use the passed $db object in your method:

class myotherclass {
     var $db;

     function myotherclass(&$db) {

         $sql = 'select * from mytable';
         $db->dosql($sql);
     }
}

Another way is to declare the $db variable global in your methods so that it
is available without the need to pass it to *every* single method:

class myotherclass {

     function myotherclass() {

         global $db;

         $sql="select * from mytable";
         $db->dosql($sql);
     }
}

But this is a case of personal preference.

Best regards, Torsten Roehr

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

Reply via email to