Hello. I have this question. When I program, I try to create a class for each table. Example below.

Now what some complain about, and logically so, is that this might impose an overhead (I load all data even if I just need a counter and NOT description).

So I say we can make a STATIC version of each Accessor with $cid as argument; But then they say what if i want to load an array of all 2000 counters, for example. I say first get all the $cid's, then in an array, load a class for each one, etc.. That however makes lots of SQL calls instead of one big one. I suppose I can get all data and then load it into classes, but that seems like a bad approach, especially for calculated values.

What I am curious about is what paradigms do you guys use to address these issues? Is my paradigm good and it's worth to just provide static methods for frequently necessary fields to reduce overhead, or is there a better way of dealing with this stuff?

class Counter
{
var $db;

var $cid;
var $counter;
var $descr;

/**
* Default Constructor
* @param int $cid - Counter ID
*/
function Counter($cid=false)
{
global $db;
$this->db = &$db;
if (isset($cid) && $cid) $this->load($cid);
}

/**
* Description
* @param int $cid - Counter ID
* @return bool
*/
function load($cid=0)
{
if (!$cid) return false;

$q = "SELECT * FROM counter WHERE cid = $cid";
$r = $this->db->getRow($q); // Using PEAR here.

if (!DB::isError($r)) {
$this->cid = $r["cid"];
$this->counter = $r["counter"];
$this->descr = $r["descr"];
return true;
}
return false;
}

#################################################################
# Accessor Methods
#################################################################
function getCid() { return $this->cid; }
function getCounter() { return $this->counter; }
function getDescr() { return $this->descr; }

#################################################################
# Mutator Methods
#################################################################
function setCid($v) { $this->iaid = $v; }
function setCounter($v) { $this->counter = $v; }
function setDescr($v) { $this->descr = $v; }

// Many other methods, etc.... Static methods, etc...
}



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

Reply via email to