在添加setAttribute
之后,我跟随了类并且initPDO失败了namespace DBInterface;
class DBInterface {
protected function initPDO() {
$dsn = sprintf('sqlsrv:Server=%s;Database=%s', DB_SQL_SERVERNAME, DB_DB_NAME);
$this->obPDO = new \PDO($dsn, DB_SQL_USERNAME, DB_SQL_PASSWORD);
$this->obPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
}
这给出了PHP错误:
Could not find class file: DBInterface/PDO in root lib directory nor build lib path
Trace: [file] => path\lib\DBInterface\DBInterface.php
[line] => 23
[function] => __autoload
[args] => Array
(
[0] => DBInterface\PDO
)
你看到一些愚蠢的东西吗?我无法弄清楚oO。
第23行指向setAttribute方法。
答案 0 :(得分:3)
您只有一个命名空间问题。根名称空间中存在PDO
,因此在常量的开头需要反斜杠。就像使用new \PDO
一样。
$this->obPDO->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
没有反斜杠,PHP正在PDO
命名空间中寻找DBInterface
。正如您在错误中看到的那样,它会查找不存在的DBInterface\PDO
。