Recently I was challenged on the fly to come up with an example of a factory pattern. Here is the result:
/**
* Database Connection Example
* @author randymelder
*/
interface DatabaseConnection {
function connect();
}
class MySQLDatabaseConnection implements DatabaseConnection {
var $link;
var $user;
var $pass;
var $host;
function __construct($host,$user,$pass)
{
$this->user = $user;
$this->pass = $pass;
$this->host = $host;
}
function connect()
{
try
{
$this->link = mysql_connect($this->host,$this->user,$this->pass,TRUE);
} catch (Exception $e)
{
echo("Error establishing database connection in MySQLDatabaseConnection::connect() ".$e);
}
return $this->link;
}
}
class PDODatabaseConnection implements DatabaseConnection {
var $link;
var $user;
var $pass;
var $host;
function __construct($host,$user,$pass)
{
$this->user = $user;
$this->pass = $pass;
$this->host = $host;
}
function connect()
{
try
{
$this->link = new PDO($this->host, $this->user, $this->pass);
} catch (Exception $e)
{
echo("Error establishing database connection in MySQLDatabaseConnection::connect() ".$e);
}
return $this->link;
}
}
class DBConnectionFactory {
function connect($type = 'MySQL',$host,$user,$pass)
{
$conn = NULL;
$objtype = $type."DatabaseConnection";
try {
$conn = new $objtype($host,$user,$pass);
} catch (Exception $e)
{
echo("Error creating connection from DBConnectionFactory ".$e);
}
return $conn->connect();
}
}
//old school mysql
$mylink = DBConnectionFactory::connect("MySQL", "localhost", "test","test");
mysql_select_db("test",$mylink);
$query = "select author_id,name from authors";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
echo "\n".$row['author_id'].":".$row['name']." ";
}
echo "\n";
mysql_close($mylink);
//PDO
$mylink = DBConnectionFactory::connect("PDO", "mysql:host=localhost;dbname=test", "test","test");
$query = "select author_id,name from authors";
foreach($mylink->query($query) as $row) {
echo "\n".$row['author_id'].":".$row['name']." ";
}
echo "\n";
Thoughts?






Discussion
No comments for “A PHP Factory Pattern Example”