On Wed, 2007-07-11 at 16:46 +0100, Steve Perkins wrote:
>
> I guess there are lots of "workaround" ways. I could write lots of
> "middleman" code in generic and use things like __set and __get etc but its
> lots of extra overhead. I also know I could use extends but that makes the
> code the wrong way around (MySQL_Driver would have to extend generic), hence
> the top-level application would have to include code to determine which
> driver to create rather than the db object determining its own connection
> driver to use. This is true also for just lumping everything in a single
> class per db type.
You want a factory class that creates an instance of the appropriate
driver object. The driver object SHOULD extend the generic class.
<?php
class DbFactory
{
function __construct()
{
// :)
}
function getConnection( $type, $params )
{
if( $type == 'MySQL' )
{
return new DB_Driver_MySQL;
}
else
if( $type == 'ODBC' )
{
return new DB_Driver_ODBC;
}
return false;
}
}
class DB_Driver_Generic
{
public $var1;
public $var2;
function __construct()
{
}
function runQuery( $query )
{
}
}
class DB_Driver_MySQL extends DB_Driver_Generic
{
function __construct()
{
parent::__construct();
}
}
class DB_Driver_ODBC extends DB_Driver_Generic
{
function __construct()
{
parent::__construct();
}
}
?>
Cheers,
Rob.
--
...........................................................
SwarmBuy.com - http://www.swarmbuy.com
Leveraging the buying power of the masses!
...........................................................
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php