一个好的方法是使用PDO,它为多个引擎(MySQL、MSSQL、PostgreSQL 等)抽象数据库连接。它也已经是 OOP 了。
如果您的代码是旧代码并且您无法更改为 PDO,则有几种选择。您可以使用反射抽象两个 CRUD 类之间的大部分公共代码:
abstract class AbstractLegacyConnection
{
protected $connectFunction = '';
protected $queryFunction = '';
public function connect($host, $user, $pass)
{
return call_user_func($this->connectFunction, $host, $user, $pass);
}
public function query($sql)
{
return call_user_func($this->queryFunction, $sql);
}
}
class MySQLLegacyConnection extends AbstractLegacyConnection
{
protected $connectFunction = 'mysql_connect';
protected $queryFunction = 'mysql_query';
}