Reputation: 19492
config.php
define('DB_TYPE', 'MYSQL');
dbManager.php
incude_once('config.php');
switch ( DB_TYPE ) {
case 'MYSQL': $this->_dataObject = MySqlDB::_getInstance(); break;
case 'PGSQL': $this->_dataObject = PostgreDB::_getInstance(); break;
case 'SQLITE': $this->_dataObject = SqliteDB::_getInstance(); break;
}
Can this piece of code be rewritten without the case? Something like:
$this->_dataObject = DB_TYPE::_getInstance();
This gives me an error Fatal error: Class 'DB_TYPE' not found .... in line ...
Upvotes: 1
Views: 108
Reputation: 2839
$dbClasses = array(
'MYSQL' => 'MySqlDB',
'PGSQL' => 'PostgreDB',
'SQLITE'=> 'SqliteDB',
};
$dbClass = $dbClasses[DB_TYPE];
$this->_dataObject = $dbClass::_getInstance();
Upvotes: 0
Reputation: 62377
Try:
$c = TYPE;
$this->_dataObject = $c::_getInstance();
however, this code looks like it could benefit from dependency injection
class YourClass {
public function __construct(DataObject $dataObject) {
$this->_dataObject = $dataObject;
}
}
then pass the dataobject to your class while instantiating it
Upvotes: 0
Reputation: 7793
maybe
$DBClassName = 'MySqlDB';
$this->_dataObject = $DBClassName::_getInstance();
Upvotes: 2