I know singletons are bad. But is it bad for this, too?
class DaoMySQL {
private static $instance;
private $PDO;
private function __construct() {
$this->PDO = new PDO('mysql:dbname='.MYSQL_DEFAULT_DATABASE.';host='.MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD);
$this->PDO->query('SET NAMES \'utf8\'');
}
/**
* @return DaoMySQL
*/
static public function singleton() {
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c();
}
return self::$instance;
}
/**
* @return PDO
*/
public function getPDO() {
return $this->PDO;
}
}
To use this, I do something like this. (This is from my Bean class which all data objects extends.)
public function delete() {
$calledClassName = get_called_class();
$query = "DELETE FROM `" . $calledClassName::table . "` WHERE `id` = $this->id";
return DaoMySQL::singleton()->getPDO()->exec($query);
}