我正在从mysqli扩展一个类,但是当我想要关闭db连接时,我不确定我做得是否正确:
class database extends mysqli
{
public function __construct($hostname = null,$username= null,$password = null,$database = null,$port = null, $socket = null)
{
$hostname = $hostname !== null ? $hostname : ini_get("mysqli.default_host");
$username = $username !== null ? $username : ini_get("mysqli.default_user");
$password = $password !== null ? $password : ini_get("mysqli.default_pw");
$database = $database !== null ? $database : "";
$port = $port !== null ? $port : ini_get("mysqli.default_port");
$socket = $socket !== null ? $socket : ini_get("mysqli.default_socket");
parent::__construct($hostname,$username,$password,$database,$port,$socket);
# Check for connection error
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
}
#closes the database connection when object is destroyed.
public function __destruct()
{
return parent::close();
//echo "Destructor Called";
}
}我有没有把return放在parent::close();前面
return parent::close();还是这样就行了?
public function __destruct()
{
parent::close();
}谢谢。
发布于 2011-02-21 06:58:45
析构函数的思想是当对象超出作用域时自动调用它。因此,将没有任何东西可以分配返回值。
最佳实践是析构函数(和构造函数)不返回任何内容(void)。
程序代码不应该直接调用析构函数。
编辑:要直接回答您的问题,请使用您的第二个示例
public function __destruct()
{
parent::close();
}关于异常,在构造函数中尝试如下所示
if (mysqli_connect_errno()) {
throw new Exception('Connect failed: ' . mysqli_connect_error());
}要捕获异常,只需使用try / catch块,例如
try {
$database = new database();
} catch (Exception $ex) {
echo $ex->getMessage(); // or whatever
}https://stackoverflow.com/questions/5060352
复制相似问题