On Tue, Dec 7, 2010 at 1:55 PM, Paul M Foster <[email protected]> wrote:
>
> $this->db->select('title')->from('mytable')->where('id', $id)->limit(10,
> 20);
>
> What kind of internal magic they use to make this work, I don't know. I
> haven't examined their internals.
>
> Paul
>
> --
> Paul M. Foster
>
I've never seen the code nor used CodeIgniter but it might be
something like this:
class DB extends Abstraction
{
private $sqlString;
private $hasWhere;
public function select($fields)
{
if (is_array($fields)) $this->sqlString = 'select '.implode(',' $fields);
else $this->sqlString = 'select '.$fields;
return $this;
}
public function from($from)
{
$this->sqlString .= ' from '.$from;
return $this;
}
public function where($field, $value, $isAnd = false)
{
if ($this->hasWhere) $this->sqlString .= $isAnd ? ' and ' : ' or ';
else
{
$this->hasWhere = true;
$this->sqlString .= ' where ';
}
$this->sqlString .= $field.' = '.$this->escape($value);
return $this;
}
public function limit($start, $rows)
{
$this->sqlString .= " limit {$start}, {$rows}";
return $this;
}
// other methods
}
The only need I see for this is to build the query dynamically...
which should be very rare since all those function calls are
expensive, IMO.
Regards,
Tommy
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php