直接看代码,你能看出有错误吗?
-
class db extends PDO {
-
public function __construct($dsn, $user="", $passwd="") {
-
try {
-
parent::__construct($dsn, $user, $passwd, $options);
-
} catch (PDOException $e) {
-
$this->er( $e->getMessage() );
-
}
-
}
-
-
public function er($msg){
-
echo $msg;
-
}
-
}
实际上,这是一个错误的写法,会得到一个错误提示:
-
Call to a member function error_handle() on a non-object in ……
为什么呢?$this应该是一个对象啊!
在第6行前加一行,var_dump($this)看一下,会发现它是NULL?
怎么回事?请思考一个问题:__construct完成之前有$this吗?
构造函数完成后才有$this,所以在构造函数里用$this是不恰当的一个写法。
正确的方法是改为static函数:
-
class db extends PDO {
-
public function __construct($dsn, $user="", $passwd="") {
-
try {
-
parent::__construct($dsn, $user, $passwd, $options);
-
} catch (PDOException $e) {
-
db::er( $e->getMessage() );
-
}
-
}
-
static function er($msg){
-
echo $msg;
-
}
-
}
这次不再报错误了。
-----end----
阅读(3267) | 评论(0) | 转发(0) |