Re: referencing an existing object

From: Date: Tue, 15 Jun 2004 18:29:28 +0000
Subject: Re: referencing an existing object
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-188340@lists.php.net to get a copy of this message
"Justin Patrin" <papercrane@reversefold.com> wrote in message news:20040615162341.20005.qmail@pb1.pair.com... > 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

« previous php.general (#188340) next »