首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭mysqli连接:返回?

问关闭mysqli连接:返回?
EN

Stack Overflow用户
提问于 2011-02-21 05:56:28
回答 1查看 1.8K关注 0票数 2

我正在从mysqli扩展一个类,但是当我想要关闭db连接时,我不确定我做得是否正确:

代码语言:javascript
复制
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();前面

代码语言:javascript
复制
return parent::close();

还是这样就行了?

代码语言:javascript
复制
public function __destruct()
        {
            parent::close();

        }

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-21 06:58:45

析构函数的思想是当对象超出作用域时自动调用它。因此,将没有任何东西可以分配返回值。

最佳实践是析构函数(和构造函数)不返回任何内容(void)。

程序代码不应该直接调用析构函数。

编辑:要直接回答您的问题,请使用您的第二个示例

代码语言:javascript
复制
public function __destruct()
{
    parent::close();
}

关于异常,在构造函数中尝试如下所示

代码语言:javascript
复制
if (mysqli_connect_errno()) {
    throw new Exception('Connect failed: ' . mysqli_connect_error());
}

要捕获异常,只需使用try / catch块,例如

代码语言:javascript
复制
try {
    $database = new database();
} catch (Exception $ex) {
    echo $ex->getMessage(); // or whatever
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5060352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档