- 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**