The Template pattern describes a class that modifies the logic of a subclass to make it complete. You can use the Template pattern to hide all the database-specific connection parameters in the previous classes from yourself. To use the class from the preceding section, you need to constantly specify the connection parameters: <?php
require_once 'DB.inc';
define('DB_MYSQL_PROD_USER', 'test');
define('DB_MYSQL_PROD_PASS', 'test');
define('DB_MYSQL_PROD_DBHOST', 'localhost');
define('DB_MYSQL_PROD_DBNAME', 'test');
$dbh = new DB::Mysql(DB_MYSQL_PROD_USER,
To avoid having to constantly specify your connection parameters, you can subclass DB_Mysql and hard-code the connection parameters for the test database: class DB_Mysql_Test extends DB_Mysql {
protected $user = "testuser";
protected $pass = "testpass";
protected $dbhost = "localhost";
protected $dbname = "test";
public function _ _construct() { }
}
Similarly, you can do the same thing for the production instance: class DB_Mysql_Prod extends DB_Mysql {
protected $user = "produser";
protected $pass = "prodpass";
protected $dbhost = "prod.db.example.com";
protected $dbname = "prod";
public function _ _construct() { }
}
Please check back next week for the continuation of this article.
blog comments powered by Disqus |