PHP命名空间class中pdo报错
pdo是php系统自带的类,一般我们会自己封装数据库操作,如果封装的class类中间使用了pdo且使用了namespac命名空间,在调用的时候会直接在该命名空间下查找pdo类,显然是查不到的。这时候基本会报错 找不到xxxx\PDO class类
方法一
在你声明命名空间namespace xxx下使用如下语句将pdo类引入当前命名空间,以下code仅做示范,不代表可用。
<?php namespace xxx;//你声明的命名空间 use PDO; use PDOException;//如果有使用报错捕获,还需增加这行 class db { function __construct($sql) { $dsn="mysql:host=127.0.0.1;port=3306;dbname=ranjuandb"; $user='sa'; $pass='123456'; $dbh = new PDO($dsn,$user,$pass); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC); } }
方法二
在使用pdo类的时候前面加上斜杠“\”,pdo位于php的脚本根目录路径?
<?php namespace xxx;//你声明的命名空间 //use PDO;// 在pdo前面加斜杠的话这里就可以不使用use PDO class db { function __construct($sql) { $dsn="mysql:host=127.0.0.1;port=3306;dbname=ranjuandb"; $user='sa'; $pass='123456'; $dbh = new \PDO($dsn,$user,$pass);//加上斜杠 $dbh->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);//加上斜杠 return $dbh->query($sql)->fetchAll(\PDO::FETCH_ASSOC);//加上斜杠 } }
另外需要注意的是如果class类里面有使用try{……}catch(PDOException $e){ ……}这种代码的也要引入use PDOException;或在 PDOException 前加斜杠!
基于互联网精神,在注明出处的前提下本站文章可自由转载!
本文链接:https://ranjuan.cn/pdo-namespace-error/
赞赏
微信赞赏支付宝赞赏
发表评论