- v5:userguide:learn_extensions:new_driver|Creating A New Driver ^ v5:userguide:userguide_index|User Guide ^ ->
~~NOTOC~~
====== Extending An Existing Driver ======
You might want to modify ADOdb for your own purposes. Luckily you can still maintain backward compatibility by sub-classing ADOdb and using the ''$ADODB_NEWCONNECTION'' variable. ''$ADODB_NEWCONNECTION'' allows you to override the behaviour of ADONewConnection(). ADOConnection() checks for this variable and will call the function-name stored in this variable if it is defined.
In the following example, new functionality for the connection object is placed in the _hack_mysql_ and _hack_postgres7_ classes. The recordset class naming convention can be controlled using $rsPrefix. Here we set it to 'hack_rs_', which will make ADOdb use _hack_rs_mysql_ and _hack_rs_postgres7_ as the recordset classes.
class hack_mysql extends adodb_mysql {
var $rsPrefix = 'hack_rs_';
/* Your mods here */
}
class hack_rs_mysql extends ADORecordSet_mysql {
/* Your mods here */
}
class hack_postgres7 extends adodb_postgres7 {
var $rsPrefix = 'hack_rs_';
/* Your mods here */
}
class hack_rs_postgres7 extends ADORecordSet_postgres7 {
/* Your mods here */
}
$ADODB_NEWCONNECTION = 'hack_factory';
function& hack_factory($driver)
{
if ($driver !== 'mysql' && $driver !== 'postgres7') return false;
$driver = 'hack_'.$driver;
$obj = new $driver();
return $obj;
}
include_once('adodb.inc.php');
**End Of Lesson 10**