错误:致命错误:在第 17 行的 ... 中找不到类 'Model\PDO' 代码:
namespace Model;
class DB
{
public function __construct() {
$dsn = "mysql:host=$this->host;dbname=$this->db;charset=$this->charset";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
就在这条线的下方:
try {
$this->DBconnect = new PDO($dsn, $this->user, $this->pass, $opt);
}
第 17 行是PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
就是这样。我对命名空间的工作不多,我很笨,不知道如何解决它。试图\Model\把所有地方放在前面- 没有帮助。错误 100% 与命名空间有关。没有它们也有相同的代码 - 一切正常。
PDO是命名空间\(“根”命名空间)中的一个类,分别是它的完全限定名称\PDO。您在一开始就设置了命名空间
因此,当您编写 时
new PDO(...),您正在寻找一个new \Model\PDO(...)不存在的类。实际上,您需要使用完全限定的类名
new \PDO(...);,或者在设置当前命名空间后插入use PDO;UPD
那些。实际上,该构造
namespace My\Space;意味着所有进一步的类都将被解释为命名空间中的类,\My\Space直到您用其他东西重新定义当前命名空间。那些。
实际上,这些类将被解释为:
UPD2
那些。简单来说,如果类名中的第一个字符
\是 - 这是“绝对路径”,如果这个字符不存在 - 这是“相对”路径。并且构造use表示应在指定路径中搜索特定类。