Torsten Roehr wrote:
"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:
Global vars are generally a bad idea... It leads to spaghetti code and can end up giving you huge headaches if you're not very careful.
Also, I am not saying that $db should be passed into every method. It should be passed into the constructor and assigned as a class variable (as my code above shows). Then, any method in the object can get to it.
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
-- paperCrane <Justin Patrin>
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php