这是我正在编写的一段简单的代码:
class LessonsLearntServiceTyped
{
private $username = "***********";
private $password = "***********";
private $dsn = "mysql:dbname=lessonslearnt;host=****
******.db.******.hostedresource.com";
private $dbh;
public function __construct(){
try{
$dbh = new PDO($this->dsn, $this->username, $this->password);
}catch(PDOException $e){
echo "Connection failed: ".$e->getMessage();
}
}
public function returnAllEntries(){
$query = "select * from lessons_learnt order by id";
}
}
行。我以前没有太多PDO的经验,但是我在网上看到了一些例子,显然你不能序列化或反序列化一个PDO对象。(这是我尝试设置一个PDO对象时得到的错误信息到一个实例变量,以便我以后可以使用它)
那么,如果我们不能将PDO对象作为实例变量,那么我将如何继续编写returnAllEntries()
方法?我是否必须再次创建PDO对象,以便我可以在那里使用它?(还有一个新的PDO对象,用于我写的每个函数处理数据库)?
我在这里缺少什么?
提前谢谢大家
修改
$this->dbh = new PDO($this->dsn, $this->username, $this->password);
是我想要做的。
但是当我这样做时,我收到以下错误消息: note 此错误消息来自PHPUnit控制台的 我正在使用来测试这个类。在浏览器中,它不会显示任何错误。
“”您无法序列化或反序列化PDO实例“
答案 0 :(得分:1)
看起来这是一个非常非常奇怪的边缘情况,除了阅读这个例外:
http://fabien.potencier.org/article/9/php-serialization-stack-traces-and-exceptions
尝试取出catch语句中的$e->getMessage()
行位,看看它是否有任何改变。
答案 1 :(得分:0)
我认为问题出在我的PHPUnit测试运行器实例上。