我正在开发一个需要一些数据库交互的小型PHP应用程序。这一切都很好,直到我达到多功能性和集成的程度,因为我希望应用程序易于在其他网站中实现。
我担心的是,将两个数据库类并排运行是一个好习惯,因为我的应用程序将集成在其中的网站可能拥有其中一个。这里有一个很大的问题:(或者我应该怎么做?)以这样的方式创建数据库类,以便用另一个替换它很容易。
到目前为止,我的想法要么
或
$this->db->Query(); $this->db->fetchAll()
,因此它很容易扩展,并且函数可以被原生网站替换。我保持班级很小,功能很少,但我仍然很难知道如何创建它以使它尽可能地开发友好。
谢谢,
微米。
答案 0 :(得分:0)
以下是最流行的php数据对象接口:
答案 1 :(得分:0)
“将两个数据库类并排运行是一个好习惯吗?”不,它没有意义......?
我会使用一个特定的DB类,可以很容易地转移到另一个站点。我会使用PDO对象来实现这一点。 settings.ini应存储在webroot之外,因为登录凭据等存储在那里。
<?php
class DB_Instance
{
private static $db;
public static function getDBO()
{
global $dbSettings;
global $dsn;
global $user;
global $password;
if (!self::$db)
//Get connection parameters from ini-file
$dbSettings = parse_ini_file('settings.ini', true);
$dsn = 'mysql:dbname=' . $dbSettings['database']['name'] . ';host=' . $dbSettings['database']['host'];
$user = $dbSettings['database']['user'];
$password = $dbSettings['database']['password'];
try {
$dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_PERSISTENT => TRUE));
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->exec("set names utf8");
self::$db = $dbh;
return self::$db;
}
}
?>
然后通过这样的类访问:
<?php
class Language {
private $languageId; //Language identifier
private $language; //Which language
private $dbInstance; //DBInstance
public function __construct($languageId = null) {
$this->dbInstance = DB_Instance::getDBO();
....
然后执行如下函数:
$statement = $dbInstance->{PDO function}
有关PDO Class的更多信息,请查看:http://www.php.net/manual/en/class.pdo.php